我正在寻找一种方法来轻松且频繁地强制用户覆盖已有主体的方法,调用 super 并可能添加一些代码。简单的例子是外部化过程,粗心的用户扩展类忘记覆盖外部化,这会导致以后不必要的麻烦,当其他人尝试外部化该对象时,发现它没有实现,并且必须理解别人的代码才能编写外部化。
我无法找到不包括将大多数类抽象化(这会破坏它们的使用)的可接受的解决方案。
是否可以使用注释做类似的事情?
class Bar{
@SuggestOverride
@Override
public void foo(){}
}
这样,只要 foo() 没有被覆盖,IDE 就可以对用户扩展 Bar 喊叫。 (至少警告)(IDE Eclipse/Netbeans)
我对注释不是很熟悉,我不确定是否值得深入研究,只是为了发现它根本不可能。如果有人提出解决方案,我将非常感激。
谨致问候, 沃伊捷赫凯撒
编辑:我可能不够清楚,这里是示例代码
abstract class Foo{
public abstract void method();
}
//instantiable
class Bar extends Foo{
@Override
public void method() {
//some code
}
}
//instantiable
class Socks extends Bar{
//doesn't know about 'method'
}
最佳答案
也许可以选择具有包含抽象主体的基方法的抽象类:
abstract class Bar {
public final void foo() {
// add the base code for your method here
// ...
this.additionalWork();
}
// part that has to be overwritten
public abstract void additionalWork();
}
关于java - 使用主体强制覆盖/扩展方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30150026/