假设我们有一个方法:
@Override
public void run(Object v, NeoWaterfallI.AsyncCallback<V, E> cb) {
this.handle(v, (err, results) -> {
cb.done((E)err, (Map.Entry)results);
});
}
如果结果为空,我认为转换为 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 不喜欢它,我看到了这一点:
最佳答案
这没有任何意义:
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
指定的回调处理第二个参数可能为空的可能性。
如果您需要测试非空Map.Entry
,您可以这样做:
boolean isValidAndNotNull = (results instanceof Map.Entry);
关于java - 将 null 转换为类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55037854/