Мне нужно преобразовать измененный объект списка в неизменный список, каков возможный путь в java.Как создать неизменяемый список в java?
public void action() {
List<MutableClass> mutableList=Arrays.asList(new MutableClass("san","UK",21),new MutableClass("peter","US",34));
List<MutableClass> immutableList=immutateList(mutableList);
}
public List<MutableClass> immutateList(List<MutableClass> mutableList){
//some code here to make this beanList immutable
//ie. objects and size of beanList should not be change.
//ie. we cant add new object here.
//ie. we cant remove or change existing one.
}
Ниже мой MutableClass
-
final class MutableClass{
final String name;
final String address;
final int age;
MutableClass(String name, String address ,int age){
this.name=name;
this.address=address;
this.age=age;
}
}
Что там у вас не неизменны, потому что вы можете легко вызвать метод .add (Object o). Создайте подкласс ArrayList, переопределите метод .add (..) и попросите его либо выполнить пустую реализацию, либо выбросить неконтролируемое исключение. И сделайте этот класс окончательным, так что вы не можете подклассифицировать его и изменить реализацию. – Stultuske
Вы можете обернуть список другим объектом и реализовать только интерфейс Iterable. –
. Ответьте на свой вопрос: http://stackoverflow.com/questions/10750791/what-is-the-sense-of-final-arraylist –