Ваши клиенты уже имеют свой собственный список счетов. Поскольку «accountList» определяется как переменная object-instance, каждый созданный клиент будет иметь свой собственный независимый список учетных записей.
Все ваши клиенты будут делиться этим списком только в том случае, если вы добавите ключевое слово «static» и сделаете его переменной класса (например, независимо от того, сколько клиентов вы создадите там, будет только этот список).
Я однако рекомендую у вас есть два изменения:
1.) Удалите переменный счет от клиента. Поскольку у вас есть список, содержащий все эти учетные записи, я не вижу никакого смысла в том, что у вас есть одна учетная запись, прикрепленная к этому клиенту (если это не какая-то главная учетная запись или подобная, но в этом случае она будет отличаться от тех, которые указаны в списке, его тип).
2.) по-прежнему быть в состоянии обрабатывать счета из вашего идентификатора клиента изменить конструктор так:
public Customer(String firstname, String surname, String ssn, Account account) {
this.firstname = firstname;
this.surname = surname;
this.ssn = ssn;
this.accountList = new ArrayList<Account>();
//directly add the first account to the list of accounts
if(account != null){
accountList.add(account);
}
3.) (необязательно) Над Конструктора не удовлетворяет. Если у кого-то был бы объект Account-Object готовым, когда дело доходит до создания вашего Клиента, есть также высокая вероятность, что указанный вызывающий абонент (в конце концов это вы;)) имеет целую кучу учетных записей, чтобы добавить к этому клиенту, поэтому изменение идентификатора мой конструктор так:
public Customer(String firstname, String surname, String ssn, List<Account> accounts) {
this.firstname = firstname;
this.surname = surname;
this.ssn = ssn;
this.accountList = new ArrayList<Account>();
//directly add the first account
if(accounts != null){
this.accountList = accounts;
}
}
Если абонент имеет список счетов для этого клиента, он может напрямую доставить весь список по созданию объектов. Если, с другой стороны, у него еще нет готовых счетов, он просто доставит нуль, и у вас будет пустой список.
Существует также возможность «списков параметров» (переменные аргументы), позволяющих подойти с 0-п аргументов определенного типа, если вы не любите выше «нулевой», если нет учетных записей не будут готовы:
public Customer(String firstname, String surname, String ssn,
Account... accounts) {
this.firstname = firstname;
this.surname = surname;
this.ssn = ssn;
this.accountList = new ArrayList<Account>();
// If any accounts delivered, add them to the list
for (Account tempAccount : accounts) {
if (tempAccount != null) {
accountList.add(tempAccount);
}
}
}
В этом примере вы можете использовать его как это:
public static void main(String[] args){
// Case "I dont have a Account yet, just make me a Customer!
Customer myCustomer = new Customer("Foo", "Bar", "bla");
// Case "I already have a Account, letme directly add that to the Customer that i want to create now"
Account a = new Account();
Customer myCustomer2 = new Customer("Foo", "Bar", "bla", a);
// Case "I already have a list of Accounts, letme directly add that to ..."
Account b = new Account();
Account c = new Account();
List<Account> accounts = new ArrayList<Account>();
accounts.add(b);
accounts.add(c);
Customer myCustomer3 = new Customer("Foo", "Bar", "bla", accounts.toArray(new Account[0]));
}
к сожалению я начал писать о, прежде чем я списках параметров заметил, вам нужен массив объектов, а не список. Вот почему у нас есть «toArray» -Method в качестве временного решения, которое делает наш список учетных записей массивом учетных записей. Но не стесняйтесь просто игнорировать часть о varargs, если она не ясна и пойти для конструктора, берущего список учетных записей (или null).
Я предполагаю, что вы изучаете Java, и если так: Youre делает хорошо до сих пор. Не путайте всю информацию и продолжайте.Я рекомендую вам прочитать об объектных-экземплярах-переменных и переменных класса, чтобы выяснить, какие объекты разделяют, а что нет. «Лучше» дизайн придет с годами, не беспокоиться о таких «проблемах дизайна» прямо сейчас и играть с ними, так как они научат вас «трудному пути».
Я не вижу очевидных проблем с этим кодом. Не могли бы вы разместить выходные и ожидаемые результаты, описывающие вашу ошибку? – MrHug
Какое поведение в вашей программе заставляет вас думать, что у каждого клиента нет собственного списка учетных записей? – azurefrog
Кроме того, для чего вам нужны оба списка и учетная запись в клиенте? –