Asynchronous GWT中的异步回调-为什么是最终的?

Asynchronous GWT中的异步回调-为什么是最终的?,asynchronous,event-handling,final,gwt-rpc,Asynchronous,Event Handling,Final,Gwt Rpc,我正在开发GWT的一个应用程序作为我的学士学位论文,我对这一点相当陌生。我研究过互联网上的异步回调。我想做的是:我想处理一个用户的登录,并显示不同的数据,如果他们是管理员或普通用户 我的电话是这样的: serverCall.isAdmin(new AsyncCallback<Boolean>() { public void onFailure(Throwable caught) { //display error }

我正在开发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
            }

        }
    });
serverCall.isAdmin(新的AsyncCallback(){
失败时的公共无效(可丢弃){
//显示错误
}
成功时的公共无效(布尔管理){
如果(!admin){
//做点什么
}
否则{
//做点别的
}
}
});
现在,我看到的代码示例直接处理//do something//部分中的数据。我们与监督我的人讨论了这一点,我的想法是,我可以在成功后启动一个事件,当启动该事件时,相应地加载页面。这是个好主意吗?还是我应该坚持在内部函数中加载所有内容?异步回调让我困惑的是,我只能在onSuccess函数中使用final变量,所以我不想在其中处理事情,希望您能提供一些见解


谢谢

这就是为什么只能在内部类中使用Final变量的标准java




当我使用AsyncCallback时,我完全按照您的建议执行,通过GWT的EventBus触发一个事件。这允许我的应用程序的几个不同部分在用户登录时做出响应。

因为它是在运行时生成的内部类/匿名函数,所以需要对它访问的变量进行静态内存引用。将final放入变量会使其内存地址保持静态,从而将其放入安全内存区域。如果引用类字段,也会发生同样的情况