2014-01-19 34 views
0

我試圖找到一種方法將內容從一個ArrayList的一類礦井複製到我目前工作的類來訪問一個ArrayList。如何從另一個類

這是我的代碼是如何目前在尋找我想要的內容轉移到類:

  MainActivity MA = new MainActivity(); 
    ArrayList<String> deletedValues = new ArrayList<String>(); 
    for(String item :MA.deletedItems){ 
     deletedValues.add(item); 
    } 

而且,在MainActivity ArrayList中有修飾符私人,如果該事項

上面的代碼不會導致任何錯誤,但不會將任何值返回給新的ArrayList,deletedValues。

+0

像@泰勒說,你不能直接訪問。你也可以使用addAll方法,你不需要迭代整個arrayList。 請參閱http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#addAll%28java.util.Collection%29 – gonzalon

+0

Tyler建議您使用getter方法。否則,你應該公開你的ArrayList,但這不是最佳實踐。 –

回答

2

您可以get方法在任何類包含像這樣的數組列表:

public ArrayList getDeletedValues() { 
    return deletedValues; 
} 

也就是說你通常如何訪問私有變量。

0

看看Getters and Setters的設計模式。這意味着你可以讓你的變量保持私密,同時以你可以控制的方式爲其他類提供訪問。一般採用getters and setters一個典型的類看起來有點像這樣:

public class MyClass { 
    private int myInt; 

    // Setter 
    public void setMyInt(int value) { 
     myInt = value; 
    } 

    // Getter 
    public int getMyInt() { 
     return myInt; 
    } 
} 

當你給背景下實現的,你可以期望你的代碼與此類似,您的getter和setter的MainActivity類看上去就像個上面的例子。

MainActivity MA = new MainActivity(); 
ArrayList<String> deletedValues = new ArrayList<String>(); 
for(String item :MA.getDeletedItems()){ 
    deletedValues.add(item); 
} 

不過,我會藉此機會指出,而不是創建MainActivity類的新實例,你可能會感到更有利的MainActivity類的當前實例傳遞給你的類通過構造函數或類似手段使用。