如何使用Java访问另一个类中的一个类的列表。 我使用以下代码获得一个空列表。
我的代码:
public class DataRead {
public static List<String> list = new ArrayList<String>();
public void readData() {
list.add("abc");
list.add("xyz");
}
}
public class GetListData {
public static void main(String[] args) {
List<String> getList = DataRead.list;
System.out.println(getList); //getting null
}
}
我编辑的代码:
public class GetListData {
public static void main(String[] args){
DataRead dataRead = new DataRead();
dataRead.readData(); //Add elements to list
List<String> myList = DataRead.list;
System.out.println(myList.get(0));
}
}
编辑代码后仍然变空。
答案 0 :(得分:3)
您需要先实际调用readData()
方法,这会填满List
,例如
public static void main(String[] args) {
new DataRead().readData();
List<String> getList = DataRead.list;
System.out.println(getList);
}
OP编辑后:
我怀疑你得到一个空洞的结果 - check it out on ideone。
答案 1 :(得分:2)
问题是,列表仍然是空的。要从列表中读取,您需要从中获取特定元素:
list.get(x); //where x is an int value
列表没有添加元素的原因是因为添加到列表中的语句驻留在readData
方法中。您需要先调用该方法:
DataRead dataRead = new DataRead();
dataRead.readData();
因此,要阅读这些元素,您可以使用:
public static void main(String[] args){
DataRead dataRead = new DataRead();
dataRead.readData(); //Add elements to list
List<String> myList = DataRead.list;
System.out.println(myList.get(0)); //getting "abc"
}
如果列表不是要共享的,而是作为单个DataRead对象的属性,我会这样做:
class DataRead
{
//Your other attributes..
private List<String> list;
public DataRead(){
list = new ArrayList<String>();
}
public <ArrayList> getList(){
return list;
}
public void addToList(String s){
list.add(s);
}
}
答案 2 :(得分:0)
将您的代码更改为此。
public class DataRead {
public List<String> list;
public void DataRead() {
list = new ArrayList<String>();
list.add("abc");
list.add("xyz");
}
}
使用如下。
public class GetListData {
public static void main(String[] args) {
DataRead d = new DataRead();
List<String> getList = d.list;
System.out.println(getList); //getting null
}
}
最好的方法是使用Getters和setter,并且不要将变量设置为静态,除非并且直到需要它。