доступ к списку из статического метода в главном классе, в другом методе другого класса в Java - PullRequest
0 голосов
/ 05 октября 2018

У меня есть вопрос, который может звучать как основной вопрос для экспертов.Но я не специалист по 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 ]

0 голосов
/ 05 октября 2018

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

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

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

0 голосов
/ 05 октября 2018

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

...