以下是我的代码。我将对象设置为null,仍然我的print语句可以正确打印属性name
。谁能告诉我发生了什么?
public class MyClass {
String name;
public String getName() {
return name;
}
public void setName(String s) {
name = s;
}
public static void main(String args[]) {
MyClass obj = new MyClass();
obj.changeName(obj);
System.out.println("Name = " + obj.getName());
}
public MyClass() {
name = "A";
}
public void changeName(MyClass obj) {
obj.setName("B");
obj = null;
}
}
输出是:
姓名= B
答案 0 :(得分:4)
obj = null
仅将方法obj
的局部变量changeName
设置为null
。它不会以任何方式影响该变量引用的对象。
答案 1 :(得分:-1)
如果这不正确,我道歉,我最近和Kotlin一起工作,这让我头疼。
我会尝试
public void changeName(MyClass obj) {
obj.setName("B");
obj.setName(null);
}
或者您可以尝试
public void changeName(MyClass obj) {
obj.setName("B");
obj.setName().empty;
}
我认为它与将对象传递给该方法并设置对象的值并且null必须为null的错误对象或者即使对象仍然保持其值仍然保持其值的事实有关本身是空的。所以你需要将setName值设置为null。