使用正文

时间:2015-05-10 09:57:48

标签: java inheritance annotations override

我正在寻找一种轻松的方法,并且经常强制用户覆盖已经有身体的方法,调用超级并且可能添加一些代码。简单的例子是外化过程,其中粗心的用户扩展类忘记覆盖外部化,并在以后导致不必要的麻烦,当其他人试图外化该对象时,发现它没有实现并且必须了解其他人的代码只是为了写外化。

我无法找到可接受的解决方案,不包括将大多数类抽象化(这会破坏它们的使用)。

是否可以通过注释做类似的事情?

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'
}

1 个答案:

答案 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();

}