在其自己的类定义中将对象设置为null

时间:2016-01-02 03:18:07

标签: java

我是Java的初学者,我想知道您是否允许通过在其自己的类定义中使用方法将对象设置为null。这是我的意思的一个例子:我有一个名为MyList的类,使用以下方法

public void close() {
    MyList me = this;
    me = null;
}

换句话说,如果我有一个名为

的实例
MyList list = new MyList();

我打来电话:

list.close();

这会将列表设置为null吗?谢谢!

2 个答案:

答案 0 :(得分:2)

不,方法close()不会将list设置为null

me只是一个局部变量,分配给它不会影响其他变量。

我不认为你想要的是什么。

答案 1 :(得分:1)

无法从内部方法更改类外的变量。您可以将一个类包装到另一个类中,并使用该外部类在null上将内部类引用设置为close()

interface MyInterface {
    void doSomething();
    void close();
}
class DoesAllTheWork implements MyInterface {
    public void doSomething() {
        ...
    }
    public void close() {
        ... // do nothing
    }
}
class Wrapper implements MyInterface {
    private MyInterface wrapped = new DoesAllTheWork();
    public void doSomething() {
        if (wrapped == null) {
            throw new IllegalStateException();
        }
        wrapped.doSomething();
    }
    public void close() {
        wrapped = null;
    }
}

现在你可以这样做:

MyInterface s = new Wrapper();
s.doSomething();
s.close(); // Sets "wrapped" object to null