我正在创建一个abstract
class
,abstract
method
必须return
一个String
。
如果它返回null
,则会跳过它,我会使用default
代码。该选项将被视为未使用。
实现者必须决定是否要使用它们,如果没有,他们可以让它返回null
,就像IDE方法存根一样。
我需要它,因为我希望实现者知道这种方法的存在。
但问题出在此处: null
也是一个有效的回报。如果代码因任何原因返回null
,则会无意中将其用于未使用状态。
如果我将null
用于"我不想要返回String
",它也需要存根...
当他们扩展我的课程时,它将如下所示:
@Override
public String method(int i) {
// TODO Auto-generated method stub
return null;
}
我如何接受String
和null
并且未使用,默认情况下未使用?
答案 0 :(得分:2)
在Java 8+ 1 中,您可以将其设为Optional<String>
,
@Override
public Optional<String> method(int i) {
return null;
}
1 在早期版本的Java中,您可以使用Guava Optional。
答案 1 :(得分:0)
最好使用Optional.empty()
作为返回值来指示方法无法返回结果。但是,您需要第二个特殊值来表示该方法未实现。您可以使用null
,但我个人不喜欢返回类型Optional
返回null
的方法。 Optional
的想法是它应该用作返回类型而不是返回null
。
我首选的解决方案是在未实现该方法时抛出异常,并使用单独的boolean
方法指示是否抛出异常。
@Override
public boolean isImplemented() {
return false;
}
@Override
public Optional<String> method(int i) {
throw new UnsupportedOperationException();
}