Como criar objeto imutável

7 respostas
R

Como posso criar um objeto imutável?

Por exemplo: objeto Cliente com atributo ID e Nome. Quero que seja imutável. Uma vez que ele seja criado, nenhum atributo pode ser alterado.
Vou persistir ele com hibernate. Quero indicar essa restrição tanto no hibernate quanto no POJO.

7 Respostas

jgbt

via codigo: nos set’s das sua propriedades, verifica se ja foram inicializadas, se sim, não permite alterar o valor.

via hibernate: não faço ideia :mrgreen:

[]'s

J

Coloca os Set’s como visibilidade private.
O hibernate consegue acessá-los, mas o código não.

R

usando final nos atributos também dá?

J

Final é para constantes…

Thiago_Senna

Eu já vi isso!

Sinceramente não sei exatamente como é, mas quando um objeto de negócio seu for retornar o set, vc deve usar algo do tipo

mySet.getImutableAlgumaCoisa();

Vê se vc encontra algo do tipo!

Abraços!
Thiago

jgbt

faz um teste, cria um atributo de classe final, e tenta dar um valor p/ ele que não seja na inicialização.

[]'s

F

Olá,

Faca como na classe String

Para cada metodo que for alterar o estado do Objeto crie um novo e retorne ele. Nunca testei, mas fazendo isso nao tem o pq dar problema no Hibernate.

]['s

Criado 17 de junho de 2005
Ultima resposta 17 de jun. de 2005
Respostas 7
Participantes 5