我有类似
的方法Bar yieldBar(Foo foo) {
Bar bar = new Bar();
bar.setFoo(foo);
return bar;
}
如果foo
为null,我希望此调用简单地返回null。有没有办法实现类似
@NullPassthrough
Bar yieldBar(Foo foo) {
...
}
通过编译时生成的包装器,这相当于下面的内容:
Bar yieldBar(Foo foo) {
if (foo == null) return null;
return yieldBar(foo);
}
Bar yieldBarHelper(Foo foo) {
...
}
答案 0 :(得分:0)
首先,在Java中使用注释纯粹是出于句法元数据的原因,因此,指定方法是否返回null不会以这种方式起作用。
另一种用法是在使用注释时为编译器指定其他操作。
答案 1 :(得分:0)
您在这里不需要任何注释,我会说如果参数foo
为null,则无需使用调用yieldBar
方法,可以避免使用三元运算符
Bar bar = Objects.nonNull(foo) ? yieldBar(foo) : null;