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