Чтобы сделать класс неизменяемым, я могу сделать следующее:
1 )Сделать класс окончательным
2 )не предоставляют сеттеры
3 )пометить все переменные как окончательные
Но если в моем классе есть другой объект какого-то другого класса, тогда кто-то может изменить значение этого объекта
class MyClass{
final int a;
final OtherClass other
MyClass(int a,OtherClass other){
this.a = a;
this.other = other;
}
int getA(){
return a;
}
OtherClass getOther(){
return other;
}
public static void main(String ags[]){
MyClass m = new Myclass(1,new OtherClass);
Other o = m.getOther();
o.setSomething(xyz) ; //This is the problem,How to prevent this?
}
}