Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么可以';初始化匿名内部类中的变量吗?_Java_Firebase_Nullpointerexception_Inner Classes_Anonymous Class - Fatal编程技术网

Java 为什么可以';初始化匿名内部类中的变量吗?

Java 为什么可以';初始化匿名内部类中的变量吗?,java,firebase,nullpointerexception,inner-classes,anonymous-class,Java,Firebase,Nullpointerexception,Inner Classes,Anonymous Class,当我试图从我在内部类中初始化的对象访问变量时,NullPointerException有一个问题。但是在内部类中,它设置了所有元素,一切都很好 public class FirebaseConnectionStream extends FirebaseConnection { private Object DownloadResult; public void publish(String path,Map<String,Object> map){

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

    }

}
公共类FirebaseConnectionStream扩展FirebaseConnection{
私有对象下载结果;
公共无效发布(字符串路径、地图){
试一试{
databasereferef=database.getReference(路径);
参考更新儿童(地图);
}
捕获(例外e){
e、 printStackTrace();
}
}
公共PortfolioInfo下载(字符串路径,最终T对象){
试一试{
databasereferef=database.getReference(路径);
ref.addValueEventListener(新的ValueEventListener(){
@凌驾
已取消的公共void(数据库错误arg0){
//TODO自动生成的方法存根
}
@凌驾
public void onDataChange(DataSnapshot arg0){
试一试{
DownloadResult=arg0.getValue(object.getClass());
PortfolioInfo p=(PortfolioInfo)下载结果;
System.out.println(p.getId());//这里这行行行行吗?
}
捕获(例外e){
e、 printStackTrace();
}
}   
});
}
捕获(例外e){
e、 printStackTrace();
}
return(PortfolioInfo)DownloadResult;//但是这个没有?
}
}

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