#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
.