2016-03-04 116 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