【发布时间】:2021-07-18 20:23:21
【问题描述】:
我对 ArrayList 与另一个可以更改另一个类的值的变量感到困惑。
我有两个类和两个带有ArrayList 和Object 变量的示例。
有人可以帮助我理解为什么它会有所不同,以及是否有解决方案使其具有相同的效果?
这是 ArrayList 的代码:
import java.util.List;
public class Test {
private String name = "Fifi";
void fill(List<Test> a) {
a.add(this);
}
}
import java.util.ArrayList;
import java.util.List;
public class B {
private List<Test> a = new ArrayList<Test>();
//a variable is empty
public B() {
// TODO Auto-generated constructor stub
Test oa = new Test();
oa.fill(a);// After this method is called, a variable has change with name is "FiFi"
}
public static void main(String[] args) {
new B();
}
}
然后,我和object变量有同样的形式,但结果不一样。
public class Test {
private String name = "Fifi";
void fill(Test b) {
b = this;
}
}
public class B {
private Test a;
// so a variable is null
public B() {
// TODO Auto-generated constructor stub
Test oa = new Test();
oa.fill(a);// after fill method is called, a still null!
}
public static void main(String[] args) {
new B();
}
}
与上面的 Arraylist 和对象变量有什么不同?我不明白它是如何发生的!
【问题讨论】:
-
在您的第一个示例中,您从不使用您创建的私有 List
,而只是在方法退出时丢弃的新本地列表。 -
@NomadMaker 用于添加Test类的实例,请仔细检查
-
@eis 是的,你是对的。对不起。
标签: java class object arraylist