無関係な戻り型を持つ継承方法
-
13-12-2019 - |
質問
次のコードスニペット
public class Test {
static interface I1 { I1 m(); }
static interface I2 { I2 m(); }
static interface I12 extends I1,I2 { I12 m(); }
public static void main(String [] args) throws Exception {
}
}
.
コンパイルしようとするとエラーが発生しました。
.Test.java:12: types Test.I2 and Test.I1 are incompatible; both define m(), but with unrelated return types.
これを回避する方法?
解決
Java - メソッド名の衝突これを行うことはできません。
回避策として、アダプタクラスを作成できます。
他のヒント
これが機能する場合は、 xamde で述べられている場合は1つだけですが、徹底的に説明されていません。それはコレクタ
です。JDK 5では、Covariantが追加された場所に戻り、そのようなものとして、問題なく、細かいコンパイルで実行される有効なケースです。
public interface A {
public CharSequence asText();
}
public interface B {
public String asText();
}
public class C implements A, B {
@Override
public String asText() {
return "C";
}
}
.
そのため、エラーなしで実行され、「C」をメイン出力に印刷します。
A a = new C();
System.out.println(a.asText());
.
のバグです。
私は同じ問題を抱えており、OracleからJDK 7を使用して問題があるようです。
所属していません StackOverflow