0

我有一个问题,对专家来说可能听起来是基本问题。但我不是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
....
}

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

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

4

2 回答 2

1

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

于 2018-10-05T09:41:23.717 回答
1

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

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

作为一般规则,对象不应直接将其状态暴露给其他对象,除非绝对必要。

于 2018-10-05T09:49:08.637 回答