Sau*_*wal 8 java garbage-collection destructor
我接近它类似于删除任何常见对象的情况,即简单地使引用为null并让垃圾收集器完成其工作.
但是,对于在类中等于null,对该对象的唯一引用是"this".以下类的代码是有效的:
class A{
public A(){
//Init
}
public void method destruct(){
if(someCondition){
this=null; //Is this statement valid? Why / Why not?
}
}
}
Run Code Online (Sandbox Code Playgroud)
duf*_*ymo 18
您不要在Java中"破坏"对象.这是错误的.不要这样做.
在Java中在堆上创建对象.只要有指向他们的参考,他们就会活着.垃圾收集器清理混乱.
你当然应该尽你所能来确保你不会不必要地积累和保留引用(例如Swing中的Listeners).
但你的建议根本不是正确的.停止和停止.
Ste*_*n C 11
Run Code Online (Sandbox Code Playgroud)this=null; //Is this statement valid? Why / Why not?
它不是有效的Java,因为this
它不是左值; 即不是你可以指定的东西.这是一个编译错误,就像42 = i;
编译错误一样.
(JLS说明以下关于赋值: "赋值运算符的第一个操作数的结果必须是变量,否则会发生编译时错误." - JLS 15.26.1 然后JLS文本继续列出不同的东西有资格作为变量,而this
不是其中之一.)
此外,正如duffymo所说,在Java中这是一个完全错误的事情.让GC完成它的工作.
归档时间: |
|
查看次数: |
1125 次 |
最近记录: |