我有一个C ++类用于跟踪调用例程的进入和退出。
class myTrace{
std::string m_strName;
myTrace( std::string strName ){
m_strName = strName;
_tprintf( _T("\n%s entering"), m_strName );
};
~myTrace(){
_tprintf(_T("\n%s exiting"), m_strName );
};
};
使用起来很简单,你将它实例化为使用堆栈机制在例程中完成的第一件事。调用例程时,它会输出并输入消息。例程退出时,会打印出退出消息。
我正在尝试将其迁移到java,但是我所做的关于缺少析构函数的所有阅读让我感到困惑的是,是否有任何方法可以在java中完成?
-bob lambert -
答案 0 :(得分:0)
理论上,你可以覆盖方法finalize,所以
public class MyClass {
@Override
protected void finalize() throws Throwable {
System.out.println("exiting");
super.finalize();
}
}
当它确定没有对该对象的更多引用时,它将由垃圾收集器调用
所以当你这样做时
public static void myMethod()
{
MyClass a = new MyClass();
}
public static void main(String[] args) {
myMethod();
System.gc();
}
作为输出你将得到
离开
如果我记得在C ++中析构函数用于释放内存时对象将被销毁,在java中我们不必担心这一点,GC正在为我们这样做。所以在大多数情况下你不应该真的需要destructos