У меня есть метод, который обновляет портфель клиента по его идентификатору.Но когда я использую его два или более раз, даже для других клиентов, возникает алиасинг, и все клиенты получают «новый» один и тот же портфель.
ArrayList<String> namesOfStocksFromInput=new ArrayList<>();
ArrayList<Integer> amountFromInput=new ArrayList<>();
int clientId;
int selection=0;
Scanner input = new Scanner(System.in);
do
{
try{
selection=input.nextInt();}
switch(selection) {
case 1:
System.out.println("Please enter clients id.");
try{
clientId=input.nextInt();}
catch(Exception e){System.out.println("Wrong input"); break;}
/* Some tests if client exists, if exists- continue to updating his portfolio*/
System.out.println("Please enter new stocks for clients portfolio"
+ " and beside respective amount.");
/*Method, that separates names and integers from input.
namesOfStocks get names, amount list get integers*/
scanf(namesOfStocksFromInput,amountFromInput);
/*some tests */
/*And finally updating the clients portfolio.*/
updateClientPortfolio(clientId,
new StockPortfolio(namesOfStocksFromInput,amountFromInput));
break;
}
}while(selection!=100);
Объявление updateClientPortfolio:
public void updateClientPortfolio(int id,StockPortfolio portf)
Я пытался использовать конструктор копирования - не помогло.Каков наилучший способ избежать этого псевдонима?