Java 使用回调函数访问父变量

Java 使用回调函数访问父变量,java,Java,我正在使用FacebookSDK,并试图修改父函数中的一个变量(至少我会这样称呼它) 如何修改变量“actor”(已标记) public void getUserFeed(int限制){ 字符串q=“”;//已取出查询 Bundle params=新Bundle(); 参数putString(“q”,q); Session=Session.getActiveSession(); 请求=新请求(会话, “/fql”, params, HttpMethod.GET, 新建请求。回调(){ 未完成公共

我正在使用FacebookSDK,并试图修改父函数中的一个变量(至少我会这样称呼它)

如何修改变量“actor”(已标记)

public void getUserFeed(int限制){
字符串q=“”;//已取出查询
Bundle params=新Bundle();
参数putString(“q”,q);
Session=Session.getActiveSession();
请求=新请求(会话,
“/fql”,
params,
HttpMethod.GET,
新建请求。回调(){
未完成公共无效(响应){
GraphObject GraphObject=response.getGraphObject();
if(graphObject!=null){
JSONObject JSONObject=graphObject.getInnerJSONObject();
试一试{
JSONArray数组=jsonObject.getJSONArray(“数据”);
对于(int i=0;i
只能访问嵌套内部类中的final变量。技巧在于对对象的引用可能是最终的,但对象状态可以修改

你可以这样做

AtomicReference actorRef = new AtomicReference("");
....
     public void onCompleted(Response response) {
          ....
          actorRef.set(object.getString("name"));
这解决了您所问的问题。但是,可能更好的方法是不使用Request.Callback,而是在不使用回调的情况下创建一个请求,然后调用

request.executeAndWait() 

executeAndWait()将返回一个响应对象,您可以使用它来填充actor。

您只能访问嵌套内部类中的final变量。技巧在于对对象的引用可能是最终的,但对象状态可以修改

你可以这样做

AtomicReference actorRef = new AtomicReference("");
....
     public void onCompleted(Response response) {
          ....
          actorRef.set(object.getString("name"));
这解决了您所问的问题。但是,可能更好的方法是不使用Request.Callback,而是在不使用回调的情况下创建一个请求,然后调用

request.executeAndWait() 
executeAndWait()将返回一个响应对象,可用于填充actor