引用内部类中的非最终变量数据

Sam*_*Sam 1 java gwt

我在GWT做一个程序.这是我有问题的片段

 private String[] populateRSSData() {
  1==>> String[] data = null;
  try {
   new RequestBuilder(RequestBuilder.GET,
     "../database.php?action=populaterss").sendRequest(null,
     new RequestCallback() {

      @Override
      public void onResponseReceived(Request request,
        Response response) {
       2==>> data=response.getText().split("~");
      }

      @Override
      public void onError(Request request, Throwable exception) {
       Window.alert(exception.getMessage());
      }
     });
  } catch (RequestException e) {
   Window.alert(e.getMessage());
  }

  return data;
 }
Run Code Online (Sandbox Code Playgroud)

现在问题出现了,我得到一个错误,1==>> data应该声明变量final.但如果我声明它,final那么我无法存储数据2==>>

我得到的错误

Cannot refer to a non-final variable data inside an inner class defined in a different method RSS_Manager.java

请建议

Tah*_*tar 7

即使您设法克服错误,该功能也不会按照您的意图执行.您正在创建的回调将以异步方式通知从服务器收到的响应,而您的方法populateRSSData()将立即返回.

考虑到异步,您需要重新考虑您的设计.

编辑:请参阅习惯异步调用

编辑: 从上面的链接引用

要理解的重要问题是,在执行到服务器的实际往返过程中,将执行RPC调用调用之后的代码.虽然onSuccess()方法中的代码是与调用内联定义的,但是在调用代码返回到JavaScript主循环并且来自服务器的结果消息返回之前,它不会被执行.