6

クラス内のクラスのインスタンスを null に設定することは可能ですか。たとえば、私はこのようなことをすることができますか

int main{
    //Create a new test object
    Test test = new Test();
    //Delete that object. This method should set the object "test" to null, 
    //thus allowing it to be called by the garbage collector.
    test.delete();

}


public class Test{

    public delete(){
        this = null;
    }
}

私はこれを試しましたが、うまくいきません。「this = null」を使用すると、左側が変数である必要があるというエラーが表示されます。同様のことを達成する方法はありますか?

4

5 に答える 5

8

オブジェクトのインスタンスは、それを参照している可能性のある参照を認識していないため、オブジェクト内のコードでそれらの参照を null にすることはできません。あなたが求めていることは不可能です(*)。

*少なくとも、すべての参照を追跡するための足場の山を追加せずにはいられません。また、参照を無効にする必要があることを何らかの方法で所有者に通知する必要があります。

于 2013-06-04T17:44:14.057 に答える
4

このようなことができます

public class WrappedTest {
    private Test test;
    public Test getTest() { return test; }
    public void setTest(Test test) { this.test = test; }
    public void delete() { test = null; }
}
于 2013-06-04T17:43:21.317 に答える
0

thisクラスのインスタンスへの参照です。参照変数を変更すると、その参照のみが変更され、それ以外は変更されません。例えば:

Integer a = new Integer(1);
Integer b = a;

a = new Integer(2);      //does NOT modify variable b

System.out.println(b);   //prints 1
于 2013-06-04T17:44:16.167 に答える
0

" this" は最終変数です。それに値を割り当てることはできません。

参照をnullに設定したい場合は、これを行うことができます

test = null;
于 2013-06-04T17:39:53.053 に答える