2014-01-19 32 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类的当前实例传递给你的类通过构造函数或类似手段使用。