Ola,
Sei que isso eh basico, mas como estou comecando com Java agora nao consegui ainda chegar a resposta:
Imagine que eu tenha uma classe Person (Usei classes Deprecated, pois eh so um simples exemplo):
package testgetters;
import java.util.Date;
/**
*
* @author Pen_Fold
*/
public class Person {
//<editor-fold defaultstate="collapsed" desc="Fields">
private String strName;
private Date objDOB;
//</editor-fold>
//<editor-fold defaultstate="collapsed" desc="Constructors">
public Person() {
objDOB = new Date(2005, 06, 06);
}
//</editor-fold>
//<editor-fold defaultstate="collapsed" desc="Properties">
public String getName() {
return strName;
}
public Date getDOB() {
return objDOB;
}
//</editor-fold>
}
Dai tenho o teste a seguir (nao reparem na pessima codificao, era somente um teste):
package testgetters;
/**
*
* @author Pen_Fold
*/
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
Person objPerson = new Person();
System.out.println("Year: " + objPerson.getDOB().getYear() );
objPerson.getDOB().setYear(2008); // This shouldn't be possible. How to avoid that?
System.out.println("Year: " + objPerson.getDOB().getYear() );
}
}
Qual o melhor enfoque para evitar que uma propriedade READ_ONLY seja alterada assim tao simplesmente, e com isso quebrar o encapsulamento?
Clonar o objeto seria algo viavel? Penso em caso onde existam muitos objetos aninhados, e isso poderia afetar negativamente a performance.
Tenho certeza que exista uma solucao amplamente utilizada para isso, mas infelizmente nao sei qual eh.
Obrigado
