从主类中的静态方法访问列表,在 Java 中不同类的另一个方法中访问列表



我有一个问题,对专家来说可能听起来是基本问题。但我不是Java专家。所以我不知道也无法在谷歌中找到很多关于这一点的细节。 希望有人可以帮助我。

我想从 Main 类中存在的方法访问一个列表,以便在不同包中不同类的另一个方法中使用。所有访问修饰符都是公共的。这可以在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
....
}

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

我在谷歌上搜索了很多,但是没有太多关于从 Main 类中的不同方法访问变量到另一个包类的信息。

另一个类中的代码可以访问的是类(方法和字段(的成员。 您的列表不是类的成员,它是方法中的局部变量。 它仅在某个线程执行该方法时存在。 如果两个或多个线程同时执行该方法,则该局部变量的实例/外观相同。 因此,在这种情况下,您希望"访问"哪一个,如果没有,您认为"访问它"应该产生什么结果?

不是对问题的直接回答,而只是一些陈述来说服你(希望(你试图做的事情是不正确的。

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

作为一般规则,对象不应直接向其他对象公开其状态,除非绝对必要。

最新更新