2017-02-15 111 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 

}