Imutabilidade de Objetos

4 respostas
denisspitfire

Galera estou estudando a apostila da Caelum Laboratorio Java com testes XML e Design P.
Minha pergunta é a seguinte, ja que a classe é final… porque os atributos também deve ser?
E…“caso sua classe tenha composições com objetos mutáveis, eles devem ter acesso exclusivo pela sua classe.”

… deu blue screen quando eu li isso kkkk se meu kernel fosse linux nao precisava ler e reler as coisas :frowning:

alguem pode me ajudar?

4 Respostas

davidbuzatto

Para que os valores dos campos da classe não possam ser alterados também.

[]'s

A

O final na classe impede que ela seja extendida.

O final nos métodos impedem que eles sejam sobre-escritos.

O final nos atributos impedem que eles sejam modificados.

denisspitfire

e essa parte? “caso sua classe tenha composições com objetos mutáveis, eles devem ter acesso exclusivo pela sua classe”

A

Se você expõe um objeto mutável, sua classe deixa de ser imutável, sacou?

Um exemplo:

class EnderecoMutavel {
  private String bairro;
  // um set e get para bairro aqui
}

class PessoaQuaseImutavel {
  private String nome;
  private EnderecoMutavel endereco;
  //apenas métodos gets aqui (sem set)
}

Você pensa: minha classe é imutável pois não coloquei nenhum set, certo? Errado!
Você poderia fazer isso:

minhaPessoa.getEndereco().setBairro("Um novo bairro");

Ou seja, sua classe pessoa tem composições com objetos mutáveis (EnderecoMutavel), mas não possui acesso exclusivo a essa composição.
( O método get expõe o acesso ao endereço para todo mundo).

Criado 7 de outubro de 2011
Ultima resposta 7 de out. de 2011
Respostas 4
Participantes 3