2016-10-17 6 views
1

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

Как я могу создать объект класса 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 

    } 
} 
+0

Вам нужно передать аргумент 'List ' в конструкторе. – rorschach

ответ

2

Вы написали конструктор, который хочет список ... так сюрприз, вы должны обеспечить один.

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

CashMachine cashMachineObj = new CashMachine(null); 

Лучше:

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

выше просто создает список пустой и передает, что в CashMashine.

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

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

, где будет создана учетная запись account1, account2 Объекты класса Account.

+0

Большое вам спасибо, это очень помогает. – meert

1

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

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

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

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

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