Alguém pode me dizer se existe algum problema com a classe abaixo? O FindBugs está apontando os seguintes problemas:
-
Method may expose internal representation by returning reference to mutable object (getDataCadSenha)
-
Method may expose internal representation by incorporating reference to mutable object (setDataCadSenha)
public class Usuario implements Serializable {
...
private Date dataCadSenha;
public Date getDataCadSenha() {
return dataCadSenha;
}
public void setDataCadSenha(Date dataCadSenha) {
this.dataCadSenha = dataCadSenha;
}
}
Nao eh bug, apenas um alerta de falta de imutabilidade do teu objeto.
Vc tem um membro privado do tipo Date… ao prover um getDate(), que retorna o membro privado diretamente, voce esta possibilitando que alguem altere a representacao interna do mesmo. Por exemplo.
obj.getDataCadSenha().setMont(11);
ira alterar o mes de cadastro da senha.
Em relacao ao setXxx() eh o mesmo lance.
A ideia eh que, ao inves de retornar direto o membro date, voce retornasse uma copia “read-only” / nao-orignal dele ( crie uma nova chamando clone(), nesse caso, por exemplo ), impedindo assim que a data seja alterada por meios “indevidos”…
Mas isso nao significa que a tua classe esta necessariamente bugada / errada. Eh mais um conceito de “boas praticas”.
Rafael
Obrigado pelas explicações.
Valeu mesmo.