从主类中的静态方法访问列表,在Java中其他类的另一种方法中访问列表

时间:2018-10-05 09:35:32

标签: java list mainclass

我有一个问题,对专家而言,这可能是基本问题。但是我不是Java方面的专家。所以我不知道,也无法在谷歌中找到很多与此有关的细节。 希望有人能帮助我。

我想从Main类中提供的一种方法访问一个List,以便在不同包中的另一种不同类的方法中使用。所有访问修饰符都是公共的。可以在java8中访问吗?

public class Main {
public static void main(String[] args) throws IOException {
        initTariffData() ;
        ....
        ....
}
public static void initTariffData() {

  List<List<Object>> SlotList = null;
   .......
   .......
  for(int innerloop=0; innerloop<(CostList.size());innerloop++) {

                        newList = new ArrayList<>();

                        newList.add(PowerList.get(innerloop));
                        newList.add(DurationsList.get(innerloop));
                        newList.add(CostList.get(innerloop));

                        SlotList.add(newList);  //Lists of all slots for 7 days
                    }
          }
}

另一堂课:

public class MyModel implements TariffModel {

.....
//Here I want to access the List "Slotlist" from the function "initTariffData" in main class
....
}

我希望我的问题清楚,并提供必要的信息。如果仍然不清楚,请告诉我。

我在Google中进行了很多搜索,但是关于从Main类内部的不同方法访问变量到另一个包类的信息并不多。

2 个答案:

答案 0 :(得分:1)

另一个类中的代码可能可以访问的是一个类的成员(方法和字段)。您的列表不是类的成员,而是方法中的局部变量。它仅在某些线程正在执行该方法时才存在。如果两个或多个线程正在同时执行该方法,则该局部变量的实例/外观将同样多。因此,在那种情况下,您想要“访问”哪个,而在没有访问的情况下,您认为“访问它”会产生什么结果?

答案 1 :(得分:1)

这不是问题的直接答案,只有几句话可以(希望)说服您您尝试做的是不正确的。

您不是在OOP光学系统中进行推理。 Java是面向对象的语言,因此它建议将状态和行为隔离在对象中。如果看起来有2个对象,并且您需要从第二个对象的第一个对象访问特定的属性,则意味着关注点分离没有很好地完成。或者这两个对象有一些共同点,在这种情况下,它们可能应该在继承树中关联。

通常,除非严格必要,否则对象不应将其状态直接暴露给其他对象。