类实例超出范围时要执行的java方法?
我有一个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中实现这一点
-鲍勃·兰伯特-
# 1 楼答案
理论上,您可以重写方法finalize,所以
当垃圾收集器确定不再有对该对象的引用时,它将调用该函数
所以当你这么做的时候
作为输出,您将获得
<>如果我记得C++中的析构函数是在对象被销毁时释放内存,在java中我们不必担心,GC就是这么做的。所以在大多数情况下,你不应该真的需要析构函数