我有一个问题,对专家而言,这可能是基本问题。但是我不是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类内部的不同方法访问变量到另一个包类的信息并不多。
答案 0 :(得分:1)
另一个类中的代码可能可以访问的是一个类的成员(方法和字段)。您的列表不是类的成员,而是方法中的局部变量。它仅在某些线程正在执行该方法时才存在。如果两个或多个线程正在同时执行该方法,则该局部变量的实例/外观将同样多。因此,在那种情况下,您想要“访问”哪个,而在没有访问的情况下,您认为“访问它”会产生什么结果?
答案 1 :(得分:1)
这不是问题的直接答案,只有几句话可以(希望)说服您您尝试做的是不正确的。
您不是在OOP光学系统中进行推理。 Java是面向对象的语言,因此它建议将状态和行为隔离在对象中。如果看起来有2个对象,并且您需要从第二个对象的第一个对象访问特定的属性,则意味着关注点分离没有很好地完成。或者这两个对象有一些共同点,在这种情况下,它们可能应该在继承树中关联。
通常,除非严格必要,否则对象不应将其状态直接暴露给其他对象。