Problemas com métodos

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.