Pergunta quanto a referência da memória

2 respostas
kina

Então galera, estava pensando outro dia quando cai na seguinte pergunta:
Supondo que tenha a seguinte classe:

public class Teste{
private final Date dataAgora = new Date();
public Date getData(){
    return dataAgora;
}
}

Até ai nada de mais, mas se fizer o seguinte:

public class MainTeste{
    public static void main(String ars[]){
        Teste t = new Teste();
        Date d = t.getData();
        d.setHour(10);
        System.out.println(t.getData());
    }
}

Ao fazer o setHour eu estou alterando o valor que eu tenho! Nada que não fosse esperado mas eis a minha pergunta.
Existe um jeito de eu deixar o valor da referencia “final”??? Como o caso do String?
Teria um outro jeito tirando fazer um return dataAtual.clone(); para resolver este problema?

falou galera

2 Respostas

Rafael_Steil

Retorne uma copia do objeto:

public Date getData(){
    return new Date(dataAgora.getTime());
}

no caso de ser algum objeto teu, faca um copy constructor.

http://www.google.com/search?q=java+copy+constructor

Rafael

kina

Rafael Steil:
Retorne uma copia do objeto:

public Date getData(){
    return new Date(dataAgora.getTime());
}

no caso de ser algum objeto teu, faca um copy constructor.

http://www.google.com/search?q=java+copy+constructor

Rafael

É… foi isso que tinha pensando…
Valeu

Criado 3 de agosto de 2005
Ultima resposta 4 de ago. de 2005
Respostas 2
Participantes 2