如何将实现识别为未使用?

时间:2015-10-06 20:16:44

标签: java eclipse api abstract-class

我正在创建一个abstract classabstract method必须return一个String。 如果它返回null,则会跳过它,我会使用default代码。该选项将被视为未使用。

实现者必须决定是否要使用它们,如果没有,他们可以让它返回null,就像IDE方法存根一样。

我需要它,因为我希望实现者知道这种方法的存在。

但问题出在此处: null也是一个有效的回报。如果代码因任何原因返回null,则会无意中将其用于未使用状态。

如果我将null用于"我不想要返回String",它也需要存根...

当他们扩展我的课程时,它将如下所示:

@Override
public String method(int i) {
    // TODO Auto-generated method stub
    return null;
}

我如何接受Stringnull并且未使用,默认情况下未使用?

2 个答案:

答案 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();
}