Экземпляры классов на основе значений:
- являются окончательными и неизменяемыми (хотя могут содержать ссылки на изменяемые объекты);
Код: Выделить всё
value class Foo {
Bar bar; // Bar is a mutable type
}
Код: Выделить всё
public int number() {
return bar.number(); // may return different results!
}
В JEP 401 упоминается:
Простые значения домена обычно используются во всей программе, но их поля являются окончательными, поэтому различные части программы, имеющие ссылки на данный объект, никогда не заметят никаких изменений в нем.
Означает ли тот факт, что изменение можно наблюдать с помощью Foo#number(), что использование класса значения неправильно?
Подробнее здесь: https://stackoverflow.com/questions/787 ... bit-change