как избежать наложения на объекты, которые используют поток ввода Java - PullRequest
0 голосов
/ 11 июня 2018

У меня есть метод, который обновляет портфель клиента по его идентификатору.Но когда я использую его два или более раз, даже для других клиентов, возникает алиасинг, и все клиенты получают «новый» один и тот же портфель.

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)  

Я пытался использовать конструктор копирования - не помогло.Каков наилучший способ избежать этого псевдонима?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...