Java的。我可以从这个类的方法中删除类的实例吗?

时间:2015-07-17 04:58:24

标签: java

public class Foo{
   public Foo(){}
   public void Method()
   {
       this = null; //doesn't work
   }
}

我知道在C#中我不能这样做,但可能在Java中可以吗?

3 个答案:

答案 0 :(得分:1)

不,你做不到。

你会得到以下错误。

作业的左侧必须是变量

答案 1 :(得分:1)

  

我可以从这个类的方法中删除类的实例吗?

除非您已经创建了该类,否则没有该类的实例。

Foo foo=new Foo();

您可以通过

取消引用foo
foo=null;

现在foo引用指向堆上的foo对象将由垃圾收集器

收集
public class Foo{

    public static void main(String[] args)
    {
        Foo foo=new Foo();
        System.out.println(foo);
        foo=null;
        System.out.println(foo);
    }
}

输出

Temp@1a8c4e7
null

答案 2 :(得分:0)

  

我可以从这个类的方法中删除类的实例吗?

没有。因为它没有意义。到目前为止,你还没有创建任何对象,而你正试图取消引用它。??

在Java中,内存管理由JVM处理,当JVM不再引用时,所有对象都被JVM破坏。

因此,您无法保证在特定时间删除实例。

   public class Foo {
    public Foo() {
    }

    public void Method() {
        // some code
    }
}

public class Test {
 public static void main(String[] args){
   Foo foo = new Foo(); // Constructor-Instance created and referenced
     foo = null; // reference variable foo is made null.
  }
 }

将foo设为null后,Foo的实例可用于GC。