解释未实现的接口方法的所有错误?

时间:2015-04-05 03:18:29

标签: java interface annotations

我的界面有超过20种方法,但只有少数对我的需要有意义。我已经实现了所需的方法。

我不想把代码写成null body。是否有任何注释或任何方式可以绕过这个并避免写空白的身体?

感谢。 普利文

1 个答案:

答案 0 :(得分:2)

一种选择是使每个未实现的方法抛出UnsupportedOperationException。这是Collections.unmodifiableList()所做的,以便它可以返回List但您无法使用add()

例如:

@Override
public void notNeeded() {
    throw new UnsupportedOperationException();
}

另一个选择是考虑实现这样的接口是否真的有意义。相反,您可以创建一个更小,更专业的界面,更好地适合您的用例。如果您可以修改当前界面,请将其扩展为新界面,以免重复代码。

例如,假设您BigInterface声明了一些您​​不希望在班级MyClass中实施的方法:

interface BigInterface {
    void notNeeded();
    int alsoNotNeeded();

    boolean neededMethod();
}

您只能提取所需的方法并创建新界面:

interface SmallInterface {
    boolean neededMethod();
}

然后让BigInterface扩展SmallInterface,以便那些实现BigInterface的类继续正常工作:

interface BigInterface extends SmallInterface {
    void notNeeded();
    int alsoNotNeeded();
}

MyClass仅实现SmallInterface

class MyClass implements SmallInterface {
    @Override
    public boolean neededMethod() {
        return true;
    }
}