Как создать объект списка из другого класса в основном методе?

#java #list #object #methods #main-method

#java #Список #объект #методы #main-метод

Вопрос:

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

Как я могу создать объект класса CashMachine?

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

Вот мои классы:

     public class CashMachine {
        private State state;
        List<Account> accountList;
        private CashCard cashCard;
        private Account selectedAccount;

        public CashMachine(List<Account> accountList){
            this.accountList = accountList;
        }
    }

public class TestMain {
    public static void main(String[] args) throws Exception {
        CashMachine cashMachineObj = new CashMachine(); //it is false

    }
}
  

Комментарии:

1. Вам нужно передать List<Account> аргумент типа в конструкторе.

Ответ №1:

Вы написали конструктор, которому нужен список… итак, сюрприз, вы должны его предоставить.

Простой, будет компилироваться, но неправильно:

 CashMachine cashMachineObj = new CashMachine(null);
  

Лучше:

 CashMachine cashMachineObj = new CashMachine(new ArrayList<>());
  

Приведенное выше просто создает пустой список и передает его в CashMashine.

Другими словами: существует много способов создания списков; и вы можете выбрать любой подход, который вам нравится. Даже такие вещи, как:

 CashMachine cashMachineObj = new CashMachine(Arrays.asList(account1, account2));
  

где account1, account2 будут существующими объектами класса Account .

Ответ №2:

Если вы прочитаете документы для List , вы увидите, что List это на самом деле интерфейс!

Интерфейсы похожи на протоколы. Методы в интерфейсах не имеют реализаций. Классы, которые реализуют интерфейс, должны предоставлять эти реализации. Вы не можете просто создать новый List объект, вызвав его конструктор, потому что не имеет смысла создавать объект с методами, которые не имеют реализаций!

Что вам нужно сделать, так это создать объект класса, который реализует List , например, ArrayList .

  ArrayList<Account> accounts = new ArrayList<>();
  

Теперь вы можете перейти accounts к конструктору CashMachine .