【问题标题】:Why can't i initialize variables in anonymous inner class? [duplicate]为什么我不能在匿名内部类中初始化变量? [复制]
【发布时间】:2017-06-11 22:22:37
【问题描述】:

当我尝试访问在内部类中初始化的对象中的变量时,我遇到了 NullPointerException 的问题。但是在内部类中它设置了所有元素,一切都很好。

public class FirebaseConnectionStream extends FirebaseConnection {


   private Object DownloadResult;

   public void publish(String path,Map<String,Object> map){
        try{
       DatabaseReference ref = database.getReference(path);
       ref.updateChildren(map);
     }
    catch(Exception e){
        e.printStackTrace();
    }
 }
 public <T> PortfolioInfo download(String path,final T object){

    try{
        DatabaseReference ref = database.getReference(path);
        ref.addValueEventListener(new ValueEventListener(){

            @Override
            public void onCancelled(DatabaseError arg0) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onDataChange(DataSnapshot arg0) { 
                try{
                DownloadResult = arg0.getValue(object.getClass());
                PortfolioInfo p = (PortfolioInfo) DownloadResult;
                System.out.println(p.getId()); // This line here works?
                }
                catch(Exception e){
                    e.printStackTrace();
                }
            }   
        });
    }
    catch(Exception e){
        e.printStackTrace();
    }
    return (PortfolioInfo) DownloadResult; // But this one does not?

    }

}

【问题讨论】:

    标签: java firebase nullpointerexception inner-classes anonymous-class


    【解决方案1】:

    ValueEventListener 中的方法是异步的,当您尝试返回 DownloadResult 时,onDataChange 将不会被调用,因此 DownloadResult 将为 null。

    【讨论】:

      猜你喜欢
      • 2014-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-26
      • 1970-01-01
      • 2015-05-16
      • 1970-01-01
      相关资源
      最近更新 更多