【发布时间】:2020-02-11 09:11:37
【问题描述】:
我有一个返回对象引用的函数。为什么我不能分配这个返回的引用指向另一个对象?函数返回的引用不是 final 的,因此我应该被允许更改它的值以指向另一个对象。
class TestClass3 {
public TestClass3 hello() {
TestClass3 t = new TestClass3();
return t;
}
}
class TestClass1 {
public static void main(String[] args) {
TestClass3 obj = new TestClass3();
// The below line of code gives an error
obj.hello() = null;
}
}
我希望调用 hello() 方法返回的引用应该被赋予空值。
【问题讨论】:
-
您正在尝试将方法设置为一个值。这是不可能的,也没有意义。
-
您的预期结果对我来说毫无意义。 您在执行
someVar = null时实际上并没有操作内存中的对象,该对象保持在原处,垃圾收集器将清理它。为什么“设置对 null 的引用”没有意义,Java 不提供这样的功能。您可以将变量设置为 null 以不再使用某个引用。 -
@Tom 是的,编译器已经抛出错误。测试一下。问题是:您只能为变量赋值。他想给一个值赋值(引用计数一个值,它不是一个变量),这是不可能的
-
@Patrick 我在哪里声称它不会引发编译器错误?而且我不需要测试它,我知道 Java 是如何工作的。还要感谢您向我解释我已经向 OP 解释过的内容。
标签: java oop reference variable-assignment