Java 如何识别未使用的实现?

Java 如何识别未使用的实现?,java,eclipse,api,abstract-class,Java,Eclipse,Api,Abstract Class,我正在创建一个摘要类,其中包含一个摘要方法,该方法必须返回字符串。 如果它返回null,它将被跳过,并将使用我的默认值代码。该选项将被视为未使用 实现者必须决定是否使用它们,如果不使用,则可以让它返回null,就像IDE方法存根那样 我之所以需要它,是因为我想让实现者知道这个方法的存在 但问题是:null也是有效的返回。无论出于何种原因,如果代码返回null,它将被无意中视为未使用 如果我将null作为“我不想返回字符串”,那么它也将使用存根 当他们扩展我的类时,它将如下所示: @Overrid

我正在创建一个
摘要
,其中包含一个
摘要
方法,该方法必须
返回
字符串
。 如果它返回
null
,它将被跳过,并将使用我的
默认值
代码。该选项将被视为未使用

实现者必须决定是否使用它们,如果不使用,则可以让它返回
null
,就像IDE方法存根那样

我之所以需要它,是因为我想让实现者知道这个方法的存在

但问题是:
null
也是有效的返回。无论出于何种原因,如果代码返回
null
,它将被无意中视为未使用

如果我将
null
作为“我不想返回
字符串”
,那么它也将使用存根

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

@Override
public String method(int i) {
    // TODO Auto-generated method stub
    return null;
}
如何接受
String
null
且未使用,默认值为未使用?

在Java 8+1中,您可以将其设为

@覆盖
公共可选方法(int i){
返回null;
}

1在早期版本的Java中,您可能会使用。

最好使用
Optional.empty()
作为返回值,以指示方法无法返回结果。但是,您需要第二个特殊值来表示该方法未实现。您可以使用
null
,但是我个人不喜欢返回类型为
Optional
returning
null
的方法。
Optional
的思想是应该将其用作返回类型,而不是返回
null

我的首选解决方案是,如果未实现该方法,则抛出异常,并使用一个单独的
boolean
方法指示是否将抛出异常

@Override
public boolean isImplemented() {
    return false;
}

@Override
public Optional<String> method(int i) {
    throw new UnsupportedOperationException();
}
@覆盖
公共布尔值已实现(){
返回false;
}
@凌驾
公共可选方法(int i){
抛出新的UnsupportedOperationException();
}

我建议为默认设置抛出一个异常。很明显,您不能将
null
用作特殊值。将返回类型设置为可选的怎么样?@Tunaki:Effective Java第二版第57条建议“仅在异常情况下使用异常”。这听起来并不是一个例外情况。
@Override
public boolean isImplemented() {
    return false;
}

@Override
public Optional<String> method(int i) {
    throw new UnsupportedOperationException();
}