Findbugs reports a lot of EI_EXPOSE_REP and EI_EXPOSE_REP2 bugs on my code, each time I write getters and setters like this:
public Date getDate() {
return date;
}
public void setDate(final Date date) {
this.date = date;
}
I understand the meaning of the report, I should not expose the internal references of my objet to the outside world so that they can not be modified by a malicious/erronous code. A fix would be:
public Date getDate() {
return date == null ? null : date.clone();
}
public void setDate(Date date) {
this.date = date == null ? null : date.clone();
}
My question is not here. I am surprised that this report concerns ALWAYS Date. Why not all other mutable objects? I think this report goes for all mutable objects too, doesn't it ?
Should I extend this "good practice" to all my accessors that deal with mutable objects?
Give me your advice, thanks