2016-03-04 114 views
0

如何使用Java访问另一个类中的一个类的列表。 通过使用以下代码,我得到一个空列表。如何从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

该列表为空,因为里面没有内容。 readData方法尚未被调用。 – NiallMitch14

+0

@NiallMitch14'null'和空不是一回事。 –

+0

我得到空list.I'm试图获取“GetListData”类中的列表值。请编辑代码 – dev777

回答

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); 
    } 
} 
+0

看来你确实需要调用'readData'因为没有显示 – Ascalonian

+1

@Ascalonian天哪构造,我忽略了它。我以为是一个构造者...他使用的命名......格兹。感谢提醒。 – user3437460

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

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,并且不要使变量成为静态的,除非和直到它需要为止。

+1

您可能想要创建一个'DataRead'构造函数,对吧?目前,您创建了一个'void'方法,而不是... – radoh