public class NetworkEntry {
private String name;
private int cost;
private StringListExt predList;
private StringListExt succList;
public NetworkEntry(String nameval, int costval, String pred){
name = nameval;
cost = costval;
predList = new StringListExt();
succList = new StringListExt();
predList.add(pred);
}
因此构造函数应该在predList中添加字符串red时实例化predList和succList。但是,当我调用print来查看predList和succList中的内容时,pred会显示在两者中。
StringListExt只是
的扩展protected static ArrayList <String> list;
public StringList () {
list = new ArrayList <String>();
}
答案 0 :(得分:2)
不要使用静态
protected static ArrayList <String> list;
如果你使用static,那意味着只有一个这个变量 - 在JVM中的所有实例之间共享。
根据https://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html
有时,您希望拥有所有对象共有的变量。 这是通过静态修改器完成的。有的领域 声明中的static修饰符称为静态字段或类 变量。他们与班级有关,而不是与班级有关 宾语。该类的每个实例都共享一个类变量,即 在内存中的一个固定位置。任何对象都可以更改a的值 类变量,但类变量也可以在没有的情况下进行操作 创建一个类的实例。