Realmente. Eu confundi as regras para finalize da JVM com as regras para 
finaliza��o da CLR. Em .NET os finalizers podem executar mais de uma vez... 
(o que, sinceramente, faz muito mais sentido).

<snip language="C#">
using System;

public class Highlander
{
        public static Highlander Instance;

        public Highlander()
        {
        }

        ~Highlander()
        {
                Console.WriteLine("finalize");
                Highlander.Instance = this;
                GC.ReRegisterForFinalize(this);
        }
}

public class App
{
        public static void Main(string[] args)
        {
                new Highlander();
        }
}
</snip>

Foi uma thread interessante :-)
Rodrigo

>From: "Bruno Borges" <[EMAIL PROTECTED]>
>Reply-To: "Bruno Borges" <[EMAIL PROTECTED]>
>To: <[EMAIL PROTECTED]>
>Subject: [enterprise-list] Concluindo ressurei��o
>Date: Tue, 1 Oct 2002 16:48:20 -0300
>
>� poss�vel ressucitar um objeto apenas uma vez... segue o codigo:
>
>public class Teste extends Object {
>
>   public static Teste instancia;
>
>   public Teste() {}
>   public String oi() {return "oi";}
>
>   public void finalize {
>     instancia = this;
>     System.out.println("finalize()");
>   }
>
>   public static void main(String a[]) {
>     Teste t = new Teste();
>      t = null; // removeu a unica referencia q restava ao objeto Teste
>      System.gc(); // qdo ele for remover o objeto da memoria, vai executar 
>o
>finalize, entao "finalize()" serah impresso no console
>      t = Teste.instancia; // instancia recebeu a referencia ao objeto 
>Teste
>durante o metodo finalize, entao ainda temos o objeto
>
>      // agora vem o legal
>
>      t = null; // removemos uma referencia
>      Teste.instancia = null; // removemos a ULTIMA referencia ao objeto
>Teste (adios amigo)
>      System.gc(); // serah q vai ressucitar o objeto?! pois a principio 
>isso
>deveria executar o finalize... axo q nao heim... bom, vamos ver...
>
>      t = Teste.instancia; // serah q recuperamos o objeto?
>      System.out.println(t.oi()); // oooops!!! NullPointerException!!!
>      System.exit(1);
>   }
>
>}
>
>
>_.~._.~._.~._.~._.~._.~._.~._.~._
>Programador Java Junior, 19 anos.
>_.~._.~._.~._.~._.~._.~._.~._.~._
>Email: [EMAIL PROTECTED]
>#UIN: 8584744
>
>_______________________________________________________________________
>Yahoo! Encontros
>O lugar certo para encontrar a sua alma g�mea.
>http://br.encontros.yahoo.com/
>
>---------------------------------------------------------------------
>Para cancelar a subscri��o, envie mensagem para: 
>[EMAIL PROTECTED]
>Para comandos adicionais, envie mensagem para: 
>[EMAIL PROTECTED]






---------------------------------------------------------------------
Para cancelar a subscri��o, envie mensagem para: 
[EMAIL PROTECTED]
Para comandos adicionais, envie mensagem para: [EMAIL PROTECTED]

Responder a