如何将对象从Main类传递到其他类

时间:2016-04-06 13:37:29

标签: java

我正在学习编写java代码,但我遇到了一些问题,我可以使用帮助来理解工作原理。

我在我的主课上制作了一个包含" Images"的列表,名为" myList"。

public class Main{

 public static void main(String[] args) {
  List<Images> myList = new ArrayList<Images>();
  ...

我想在这个&#34; System&#34;上访问它。类。但似乎没有让我这么做。 计划是访问给定列表上的位置(在此示例中为第3个)(list.get(2))。 所以我创建了方法&#34; work&#34;。

//Example    
public class System{
public static boolean work(List<Images> list){
    if( list.get(2).equals(Something) )
        return false;
    else ... return true;
}   

在同一个System类中,我尝试使用方法&#34; work&#34;,给它我在Main类(myList)上创建的List。

public class System{
...
if( work(myList) ) //Don't know how to reffer to myList
 return something;

给我错误&#34; myList无法解析为变量&#34;。 所以问题是如何记录我在Main上创建的列表,名为&#34; myList&#34;。

不确定我是否解释得太好但有任何建议?

4 个答案:

答案 0 :(得分:3)

使List成为System类的属性,然后在构造函数

中传递它
public class System {
    private List<Images> images;

    public System(List<Images> images) {
        this.images = images;
    }

    //your other methods
}

啊,在你的主要内容中你也应该通过这个清单:

System system = new System(myList);

答案 1 :(得分:0)

另一个选项是使myList 公共静态并像这样访问它:

Main.myList

答案 2 :(得分:0)

声明一个帮助器类并使用setter和getter声明列表。维护此类的单个对象,然后在不同的其他类中使用该列表。

答案 3 :(得分:0)

你需要确保它可以访问。

现在,您的列表的作用域为main()函数。这是静态启动。

您需要让它可访问。您可以通过将其存储在静态变量中并使用静态函数返回它来完成此操作。 或者您将主对象传递给其他对象,以便他们可以访问它。

public class Main {
    private List<Images> myList = new ArrayList<Images>();

    public static void main(String[] args) {
       new Main(args);
    }

    public Main(String[] args) {
       myList.add('foo.png');
       myList.add('bar.png');
       System mySystem = new System(this);
    }

    public List<Images> getImages() {
        return myList();
    }

}

public class System{
    Main global;
    public System(Main main) {
        global = main;
    }
    public void doSomething() {
       Iterator<Images> it = global.getImages().iterator();
       while(it.hasNext()) {
          Images images = it.next();
       }
    }
}