Можем ли мы вызвать другой метод, когда наблюдаем что-то - PullRequest
0 голосов
/ 20 декабря 2018

Я хочу соблюдать предел очереди. Когда он превышает предел, я хочу создать другую очередь, вызвав метод

Я попытался вызвать метод newqueue (создать новую очередь) внутри переопределенного наблюдателя.метод обновления.

public void update(Observable o,Object arg){
    Bank bank = new Bank();
    if(arg == "went_over"){
        System.out.println("went over the limit");
        bank.newqueue();    //didn't work
}

где мне вызвать этот метод newqueue?

Ответы [ 2 ]

0 голосов
/ 20 декабря 2018

Если исходить из опубликованной вами ссылки на github (которая имеет другой код, но тем не менее), то проблема в том, что в методе update вы вызываете addtoque2 (который, я думаю, вы называете newqueue, здесь) на только что созданном экземпляре Bank.Таким образом, экземпляр, который вы создаете с помощью

Bank bank = new Bank();

в качестве локальной переменной в методе update(), является единственным, который вызывает этот метод.Я предполагаю , что вы на самом деле хотели воздействовать на экземпляр, который вы создали в main.Если это так, вам нужно как-то сделать ссылку на нее доступной в update.Есть несколько способов сделать это, в том числе:

  • Сделать Bank полем в FrontOfficer, которое в данном случае является вашим Observable, и получить к нему доступ через него.
  • Делегировать создание очередей FrontOfficer всего
  • Если будет только один банк, вы можете использовать шаблон синглтона
0 голосов
/ 20 декабря 2018

Не могли бы вы предоставить немного больше контекста?Еще несколько фрагментов кода могут дать нам ключ.

В любом случае, вы сравниваете arg с String.Если полученный объект является строкой, круто.Если это не так, это, вероятно, не будет работать как задумано.Я бы сказал, что if(arg.getName() == "went_over") будет способом, если все объекты, которые вы передаете, имеют такой метод?

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