Асинхронный обратный вызов в GWT - почему финал?

Я разрабатываю приложение в GWT в качестве дипломной работы бакалавра, и я довольно новичок в этом. Я исследовал асинхронные обратные вызовы в Интернете. Я хочу сделать следующее: я хочу обработать имя пользователя и отобразить разные данные, если они администратор или обычный пользователь.

Мой звонок выглядит так:

serverCall.isAdmin(new AsyncCallback<Boolean>() {
        public void onFailure(Throwable caught) {
            //display error
        }

        public void onSuccess(Boolean admin) {
            if (!admin){
                //do something 
            }
            else{
                //do something else
            }

        }
    });

Теперь примеры кода, которые я видел, обрабатывают данные в // части выполнения чего-либо напрямую. Мы обсудили это с человеком, который контролирует меня, и у меня была идея, что я могу запустить событие в случае успеха, и когда это событие будет запущено, загрузите страницу соответствующим образом. Это хорошая идея? Или я должен придерживаться загрузки всего во внутренней функции? Что меня смущает насчет асинхронных обратных вызовов, так это то, что я могу использовать только заключительные переменные внутри функции onSuccess, поэтому я бы не стал обрабатывать их там - понимание будет оценено.

Спасибо!

2 ответа

Решение

Поскольку внутренняя классовая / анонимная функция генерируется во время выполнения, ей требуется статическая ссылка в памяти на переменные, к которым она обращается. Помещение final в переменную делает ее адрес памяти статическим, помещая его в безопасную область памяти. То же самое происходит, если вы ссылаетесь на поле класса.

Это просто стандарт Java, поэтому вы можете использовать только переменные Final внутри внутреннего класса. Вот отличная дискуссия по этой теме.



Когда я использую AsyncCallback, я делаю именно то, что вы предложили, я запускаю событие через EventBus GWT. Это позволяет нескольким различным частям моего приложения отвечать, когда пользователь входит в систему.

Другие вопросы по тегам