public class Foo{
public Foo(){}
public void Method()
{
this = null; //doesn't work
}
}
我知道在C#中我不能这样做,但可能在Java中可以吗?
答案 0 :(得分:1)
你会得到以下错误。
作业的左侧必须是变量
答案 1 :(得分:1)
我可以从这个类的方法中删除类的实例吗?
除非您已经创建了该类,否则没有该类的实例。
Foo foo=new Foo();
您可以通过
取消引用foofoo=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。