2017-02-15 77 views
1

你好,我想抛出一个自定义警告。假设我有Java自定义警告

public abstract class A { 

    public void doSomething() { 
     //base functionality 
    } 
} 

public class B extends A { 

    @Override 
    public void doSomething() { 
     super.doSomething(); 
     //extended functionality 
    } 
} 
public class C extends A { 

} 

我想为类C抛出一个错误,因为它不覆盖该方法。通常抽象方法就足够了,但该方法包含所有子类通用的功能,如果有更好的标准或结构,请让我知道。

我要强制所有子类@Override某些方法

我特地为创造一个像 public @interface ShouldOverride 一个自定义的注释,但我无法弄清楚如何抛出与警告。

注意。我使用的托马斯命题的IntelliJ IDEA的终极

+3

你为什么不提供一个必须重写并且通过'DoSomething的()'另一个叫抽象方法?我不会依赖IDE来强制执行这些约束,因为可以在不同的IDE或命令行中构建应用程序。如果您需要在代码本身之外强制执行这些内容,请尝试在构建中包含一些静态分析(由所有IDE调用并由命令行构建执行)。 – Thomas

+0

哦,你的权利。为什么我没有想到这一点 –

回答

1

实现:

abstract class A { 

    public void doSomething() { 
     // basic things to do 

     // then call implementation 
     doSomethingImpl(); 
    } 

    protected abstract void doSomethingImpl(); 
} 

class B extends A { 

    @Override 
    protected void doSomethingImpl() { 
     //extended functionality 
    } 
} 

class C extends A { // does not compile 

}