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

我有一个问题,这对专家来说可能是基本问题。但我不是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 类中的不同方法访问变量到另一个包类的信息并不多。


慕婉清6462132
浏览 171回答 2
2回答

江户川乱折腾

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

慕丝7291255

不是对问题的直接回答,而只是一些陈述来说服您(希望如此)您正在尝试做的事情是不正确的。您不是在 OOP 光学中进行推理。Java 是面向对象的语言,因此它建议隔离对象中的状态和行为。如果您有 2 个对象,看起来,并且您需要从第二个对象中的第一个对象访问特定属性,则意味着关注点分离没有做好。或者这两个对象可能有一些共同点,在这种情况下,它们可能应该在继承树中相关联。作为一般规则,除非绝对必要,否则对象不应直接将其状态暴露给其他对象。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java