Рассмотрим сторонний класс, такой как
class A {
private int value;
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
}
, который я делаю неизменным, как
final class ImmutableA extends A {
public ImmutableA(int value) {
super.setValue(value);
}
public void setValue(int value) {
throw new UnsupportedOperationException();
}
}
Гарантия видимости для конечных полей здесь не применима,Мой вопрос заключается в том, гарантируют ли другие потоки правильное состояние ImmutableA
.
Если нет, есть ли решение?Использование делегирования не вариант, так как мне нужно, чтобы ImmutableA
был A
.