4

Java では、インターフェイスでフィールドを使用できます。これはJava 5より前に使用されていました.今日、良い使用例はありますか?

同じ設計要件を満たす他の多くの方法とは対照的に、インターフェースでフィールドを使用する良いユースケースを誰か教えてもらえますか?

実際、インターフェースは状況によってはあいまいさと混乱を許します。たとえば。次のコード:

あいまいさの問題が以前に議論され、回答されたことは認識していますが、それは私の質問ではありません。私の質問は上記の太字で示されています。これは、インターフェイスのフィールドの潜在的な副作用の 1 つの例にすぎません。

public class Sample implements Foo,Bar{

    public void print() {
        System.out.println("Hello"+name);//field name is ambiguous
    }

    public static void main(String[] args) {
        Sample mySample = new Sample();
        mySample.print();
    }

}

public interface Foo {
    String name = "foo";
}

public interface Bar{
    String name = "bar";
}
4

3 に答える 3

2

Java では、Interfaceフィールドは暗黙的public static finalに定義されます。また、宣言時にインターフェイス内で初期化する必要があります。これを使用して、コード内のどこでも呼び出すことができるユニバーサル定数を作成できます (そのインターフェイスを実装する必要はありません)。Java APIjavax.swing.SwingUtilitiesは、定数のみを含み、メソッド宣言を含まないインターフェースです。Javaでは、これらの定数への便利な構文アクセスを実現するためにそのようなインターフェースを実装することは、実際には非常に悪い習慣である定数インターフェースパターンと呼ばれます。

@assyliasが指摘したように、enumsJava5より前の代替と見なすことができます。

于 2013-06-19T21:42:09.947 に答える