Доступ к списку из статического метода в главном классе, в другом методе другого класса в Java

У меня есть вопрос, который может звучать как основной вопрос для экспертов. Но я не специалист по Java. Так что я не знаю и не могу найти подробности в Google по этому поводу. Надеюсь, кто-нибудь может мне помочь.

Я хочу получить доступ к одному списку из метода, который присутствует внутри класса 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
....
}

Я надеюсь, что мой вопрос ясен и предоставляет необходимую информацию. Пожалуйста, дайте мне знать, если это все еще не ясно.

Я так много искал в google, но информации о доступе к переменной из другого метода внутри класса Main к другому классу пакета не так много.

2 ответа

Не прямой ответ на вопрос, а всего лишь несколько утверждений, чтобы убедить вас (надеюсь), что то, что вы пытаетесь сделать, не правильно.

Вы не рассуждаете в ООП оптике. Java является объектно-ориентированным языком и, как таковой, предлагает изолировать состояние и поведение объектов. Если у вас есть 2 объекта, как вам кажется, и вам нужно получить доступ к определенному свойству из первого во втором, это означает, что разделение интересов выполнено неправильно. Или, возможно, эти два объекта имеют некоторые общие черты, в этом случае они, вероятно, должны быть связаны в дереве наследования.

Как правило, объекты не должны напрямую выставлять свое состояние другим объектам, если это не является строго необходимым.

То, что может быть доступно для кода в другом классе, являются членами класса (методы и поля). Ваш список не является членом класса, это локальная переменная в методе. Он существует, только когда какой-то поток выполняет этот метод. Если два или более потоков одновременно выполняют этот метод, существует столько же экземпляров / появлений этой локальной переменной. Таким образом, в том случае, к какому из них вы бы хотели "получить доступ", а в случае, если его нет, как вы думаете, что в результате должно привести к "доступу к нему"?

Другие вопросы по тегам