尝试将字符串添加到一个字符串列表,但最终将字符串添加到两个字符串列表。

时间:2016-09-30 05:36:05

标签: java arrays string

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>();
}

1 个答案:

答案 0 :(得分:2)

不要使用静态

protected static ArrayList <String> list;

如果你使用static,那意味着只有一个这个变量 - 在JVM中的所有实例之间共享。

根据https://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html

  

有时,您希望拥有所有对象共有的变量。   这是通过静态修改器完成的。有的领域   声明中的static修饰符称为静态字段或类   变量。他们与班级有关,而不是与班级有关   宾语。该类的每个实例都共享一个类变量,即   在内存中的一个固定位置。任何对象都可以更改a的值   类变量,但类变量也可以在没有的情况下进行操作   创建一个类的实例。