Java:删除并重新创建对象

Java:删除并重新创建对象,java,Java,我有一个无限循环,在这里我创建了一个对象。在循环结束时,创建对象后,我运行它。运行该对象时,程序将阻塞,因为我的TcpClient对象中有另一个无限循环。但有时这个无限循环会因为一个已处理的错误而中断,并会在我的mTcpClient对象中调用一个名为“reconnect”的特定方法。在这里,我想删除mTcpClient对象,这样第一个无限循环将继续并创建一个新的mTcpClient对象 我该怎么做 while(true) { //we create a TCPClient object

我有一个无限循环,在这里我创建了一个对象。在循环结束时,创建对象后,我运行它。运行该对象时,程序将阻塞,因为我的TcpClient对象中有另一个无限循环。但有时这个无限循环会因为一个已处理的错误而中断,并会在我的mTcpClient对象中调用一个名为“reconnect”的特定方法。在这里,我想删除mTcpClient对象,这样第一个无限循环将继续并创建一个新的mTcpClient对象

我该怎么做

while(true) {

    //we create a TCPClient object and
    mTcpClient = new TcpClient(new TcpClient.OnMessageReceived() {
        @Override
        public void reconnect() {
            // HERE I want to delete this object
        }
    ....
   });

    if (mTcpClient != null)
        mTcpClient.run();
}

mTcpClient=null将对象设置为null将导致垃圾收集器为您删除该对象。

您不能手动
删除Java中的对象。你能澄清一下你所说的删除对象是什么意思吗?如果你能展示你的完整程序,这会很有帮助,但我很理解你的问题,你不能在你想要的时候删除对象。当垃圾收集器检查未使用的对象时,会自动执行此操作。如果您想在
TcpClient
的垃圾收集过程中执行某些操作,可以覆盖
protectedvoid finalize()
对象的
方法,建议finalizer几乎总是错误的建议。@texNewbie很可能您的总体设计有缺陷。发布更多代码。@chrylis,True,使用
protectedvoid finalize()
是不好的,并且它不能保证对象会被垃圾收集。但要释放通过本机方法加载的任何资源,使用
finalize()
是一种方法。您的建议是不可能的
mTcpClient
将无法在匿名内部类中访问。试试看,我试过了,我想这行得通。但我必须检查一些东西,直到我知道这是否是我问题的解决方案。