создать постоянный объект в Java - PullRequest
1 голос
/ 07 декабря 2011

Интересно, в Java Как мы можем создать постоянный объект (но не ссылочный и не неизменяемый, поскольку неизменяемость является свойством для всех объектов класса)?

Первый:

final MyClass c = new MyClass();

создает постоянную ссылку на непостоянный объект, поэтому я могу сделать:

c.setData(100);

Секунда:

Строковый класс является классомчто все его экземпляры должны быть постоянными (он же неизменный объект).Мне нужно иметь вид, который я могу создать из константных объектов и неконстантных объектов.


Другими словами, Как предоставить константу некоторым объектам класса и удалить ее издругие объекты.(без необходимости оборачивать этот объект внутри любой оболочки).

Ответы [ 3 ]

4 голосов
/ 07 декабря 2011

Я полагаю, что вы хотите что-то в соответствии с ключевым словом const в C ++, что делает неизменным экземпляр изменяемого класса.Однако прямого эквивалента этому в Java не существует.

Если вы управляете классом, вы можете определить интерфейс, который предоставляет только геттеры, и использовать этот интерфейс всякий раз, когда вам нужна ссылка "const" - это не потребуетлюбой обертки, но было бы довольно громоздко, если вам нужно сделать это для большого количества классов.

1 голос
/ 07 декабря 2011

Самое близкое, что вы можете сделать, это расширить базовый класс и переопределить его методы установки, чтобы они генерировали исключение java.lang.UnsupportedOperationException, чтобы вы могли создать объект из базового класса или неизменного подкласса ...

0 голосов
/ 07 декабря 2011

А как насчет перечисления, содержащего только один элемент? Я думаю, это очень близко к тому, что ему нужно

...