Referencia para objetos parcialmente construidos

3 respostas
louds

Temos o seguinte código:

class A {
   static A ref;
   A() {
     ref= this;
      throw new Error();
   }
    public static void main() {
       try { new A(); } catch(Throwable t) {}
       //AQUI
   }
}

Qual vai ser o estado o programa em ‘//AQUI’, dado que ‘A.ref’ guarda uma referencia para um objeto que não foi construido por completo?

Indefinido? Zuado? Ok?

3 Respostas

Paulo_Silveira

vai ficar ok
se tivesse mais coisa pra fazer ia zoar a populacao

Paulo_Silveira

rodei isso

public class A {
   static A ref;
   A() {
     ref= this;
      throw new Error();
   }
    public static void main(String [] args) {
       try { new A(); } catch(Throwable t) {}
        System.out.println(A.ref);
       //AQUI
   }
}

e apareceu saida sim, com enderecinho e tal. entao recuperou.
louco neh? bem, mas deveria ser isso mesmo.

louds

Sei lá, eu acho que deveria ser comportamento indefinido manter referecia para objetos parcialmente construidos, dado que isso é uma violação dos principios de OO.

Criado 8 de setembro de 2003
Ultima resposta 8 de set. de 2003
Respostas 3
Participantes 2