为什么我不能在匿名内部类中初始化变量?



当我尝试从我在内部类中初始化的对象访问变量时,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?
    }
}

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

最新更新