2012-02-14 8 views
7

ものです:
Why would one declare a Java interface method as abstract?可能な重複するJavaのインターフェイス上の抽象メソッド

私たちのEJBインタフェースの1に次のコードを発見しました。誰かがインタフェースで抽象的なことを知っていますか?あなたも)それが必要かもしれない理由を説明するか=それについて読むための基準を提供してくださいない場合

@Local 
public interface IDomasOrderProcessor { 

    public abstract void executeOrderLines(List<OrderLine> lines); 
    public abstract void setupJob(List<OrderLine> lines); 
    public abstract void setupJob(OrderLine line); 
} 

答えて

16

abstractは、この場合に冗長です。 interfaceで定義されたすべてのメソッドは、定義によりpublicabstractです。

抜粋Java Language Specification section 9.4

インタフェースの本体内のすべてのメソッド宣言は、暗黙的 抽象、その本体が常にセミコロンで表されるように、ない ブロックです。

インターフェイス本体のすべてのメソッド宣言は暗黙的に publicです。

+1

これは偶然に「public」です。つまり、あなたは両方を落とすことができ、同じことをするでしょう。 コードはもともとリファクタリングされた抽象クラスであった可能性があります。 – Calum

+1

実際、 'public'も同様です。私は答えにそれを加えました、私の最初のものはやや簡潔でした。 – Dev

6

両方publicabstract改質剤は、インターフェイスに暗黙であり、避けるべきです。

5

インターフェイス内のメソッドは、定義によってpublicおよびabstractです。私は、明示的に宣言しているように感じると言う人もいると聞いたことがありますが、私にとっては余分なノイズのようです。

interface
+0

それは確かにノイズです。 (私は実際にJavaで何年もプログラミングしていましたが、「public」は重複していることに気付きました)。 –

2

のすべてのメソッドあたりthis 文書は、publicabstractので、interface内部明示abstract方法を定義する何平均がないように。

関連する問題