如何从Java中的另一个类获取列表值

时间:2016-03-04 12:42:02

标签: 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)); 
    }
}

编辑代码后仍然变空。

3 个答案:

答案 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,并且不要将变量设置为静态,除非并且直到需要它。