【问题标题】:accessing a list from a static method in main class, in another method of different class in java从主类中的静态方法访问列表,在java中不同类的另一个方法中
【发布时间】:2019-03-10 18:47:33
【问题描述】:

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

【问题讨论】:

  • 不,不可能,因为 SlotList 是一个局部变量,而不是一个字段。将其设为字段,您就可以访问它。
  • 非常感谢..我现在把它作为你提到的一个字段并且它工作了.. public class Main { public static SmartChargingTariff TariffData;静态 Logger 日志 = LogManager.getLogger(Main.class);公共静态列表> SlotList = null; } 公共类 MyModel 实现 TariffModel { Main.SlotList.get(2); .... } 非常感谢!! :)

标签: java list mainclass


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-15
      • 2021-01-03
      • 1970-01-01
      • 2013-07-14
      • 2016-01-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多