web-dev-qa-db-ja.com

java)のインターフェースの抽象メソッドとは

重複の可能性:
なぜ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);
}
18
Marthin

この場合、abstractは冗長です。 interfaceで定義されているすべてのメソッドは、定義上、publicabstractです。

抜粋 Java言語仕様セクション9.4

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

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

35
Dev

public修飾子とabstract修飾子はどちらもインターフェイスに暗黙的に含まれているため、避ける必要があります。

13

インターフェイスのメソッドは、定義上、パブリックで抽象的です。そのように明示的に宣言することで明確になると感じる人もいますが、私には余分なノイズのように思えます。

6
matt freake

this 文書によると、interfaceのすべてのメソッドはpublicabstractであるため、明示的にabstractを定義する意味はありません。 interface内のメソッド。

3
subodh