我的界面有超过20种方法,但只有少数对我的需要有意义。我已经实现了所需的方法。
我不想把代码写成null body。是否有任何注释或任何方式可以绕过这个并避免写空白的身体?
感谢。 普利文
答案 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;
}
}