我想将List
对象设置为类字段,然后使用ArrayList()
作为List
的具体类。
原因是我想在程序的不同部分多次调用setData
方法,并且每次必须将数据添加到相同的对象数据,而不是不同的。
以下是代码:
import java.util.ArrayList;
import java.util.List;
public class container {
private static List<String> data = ArrayList<String>();
public static List<String> getData() {
return data;
}
public static void setData(String a) {
data.add(a);
}
}
我猜这段代码应该会导致错误 如何更改代码以使其具有与正确语法类似的结果?
如果此代码不会导致错误,任何人都可以告诉我何时(在执行程序的哪个部分)将创建静态数据对象? 附:我不打算创建容器对象,只想在程序中多次调用container.setData(String a)方法。
答案 0 :(得分:1)
以下测试:
import java.util.ArrayList;
import java.util.List;
public class container {
private static List<String> data = new ArrayList<String>();
// for java 1.5-1.6 point type here ^^^^^^^
// for java 1.7+ you can use new ArrayList<>();
public static List<String> getData() { return data;}
public static void setData(String a) { data.add(a);}
}
答案 1 :(得分:1)
我引用:“原因是我想在程序的不同部分多次调用setData方法,并且每次必须将数据添加到相同的对象数据,而不是不同的。”
如果您的数据字段声明为static
,则只会有一个数据字段,因此这不会造成任何问题。您是否测试了代码,或者只是认为会出现错误?
答案 2 :(得分:1)
如果您添加了缺少的new
字词,那么您的代码就可以使用,它可以根据需要使用。加载container
类时,将实例化ArrayList。当控制流到达引用此类的类时,通常会发生这种情况。因此,无论何时调用这些方法中的任何一个,数据字段都已准备就绪。
但是,您可能希望学习“singleton design pattern”,如果您create several threads(或者使用为您执行此操作的库),您可能希望同步对共享对象的访问权限。< / p>
import java.util.ArrayList;
import java.util.List;
public class container {
private static List<String> data = new ArrayList<String>(); // <-- new was missing
public static List<String> getData() {
return data;
}
public static void setData(String a) {
data.add(a);
}
}