Должны ли быть все поля, включая суперполя, целенаправленно неизменяемого класса java «final», чтобы быть потокобезопасным или достаточно, чтобы не иметь методов модификатора?Конечные поля и безопасность потоков
Предположим, у меня есть POJO с нефинальными полями, где все поля являются типом некоторого неизменяемого класса. Этот POJO имеет getters-seters и конструктор, который устанавливает начальное значение. Если я расширю этот POJO с помощью методов модификации нокаута, тем самым сделав его неизменным, класс расширения будет потокобезопасным?
Что вы подразумеваете под * выбиванием модификаторов методов * методов-модификаторов? Выбрасывание исключения из всех сеттеров? Это нарушит [принцип Лисковской замены] (http://en.wikipedia.org/wiki/Liskov_substitution_principle). Но да, этот класс ** ** был бы потокобезопасным. –
Да, бросая исключение во время выполнения или переопределяя их с пустым телом, возможно, с некоторым протоколированием. Я знаю, что это нарушает LSP. – pcjuzer