我正在寻找一种轻松的方法,并且经常强制用户覆盖已经有身体的方法,调用超级并且可能添加一些代码。简单的例子是外化过程,其中粗心的用户扩展类忘记覆盖外部化,并在以后导致不必要的麻烦,当其他人试图外化该对象时,发现它没有实现并且必须了解其他人的代码只是为了写外化。
我无法找到可接受的解决方案,不包括将大多数类抽象化(这会破坏它们的使用)。
是否可以通过注释做类似的事情?
class Bar{
@SuggestOverride
@Override
public void foo(){}
}
这样,只要foo()没有被覆盖,IDE就会在用户扩展Bar时大喊大叫。 (至少警告)(IDE Eclipse / Netbeans)
我不太熟悉注释,我不确定是否值得调查太深入,只是为了发现它根本不可能。如果有人提出解决方案,我将非常感激。
亲切的问候, VojtěchKaiser
编辑:我可能不够清楚,这里是示例代码
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'
}
答案 0 :(得分:0)
也许带有包含抽象主体的基本方法的抽象类是一个选项:
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();
}