说我们有一种方法:
@Override
public void run(Object v, NeoWaterfallI.AsyncCallback<V, E> cb) {
this.handle(v, (err, results) -> {
cb.done((E)err, (Map.Entry)results);
});
}
如果结果为null,则假定转换为Map.Entry将会失败。那么处理这种事情的最好方法是吗?
@Override
public void run(Object v, NeoWaterfallI.AsyncCallback<V, E> cb) {
this.handle(v, (err, results) -> {
if(results != null){
results = (Map.Entry)results;
}
cb.done((E)err, results);
});
}
还是有更好的方法?当我尝试使用null检查时,Java不喜欢它,我看到了:
答案 0 :(得分:3)
这没有道理:
if(results != null){
results = (Map.Entry)results;
}
唯一要做的是,如果results
不是从Map.Entry
继承的类,它将抛出异常。
我不知道V
,E
,err
和results
是什么类型,但这可能更接近您想要的类型:
public void run(Object v, NeoWaterfallI.AsyncCallback<V, E> cb) {
this.handle(v, (err, results) -> {
cb.done((E)err, (Map.Entry<String,V>)results);
});
}
让cb
指定的回调处理第二个参数可以为null的可能性。
如果您需要测试非空的Map.Entry
,可以这样做:
boolean isValidAndNotNull = (results instanceof Map.Entry);