0
私はこの数日間、この問題に頭を悩ませていました。独自の戻り値型でインターフェイスを呼び出すときのJava型の不一致?
私はインターフェイスを介して別のクラスとやりとりするクラスを持っています。私は十分に簡単なコードでいくつかの型不一致エラーが発生しています。
public class FooBar {
Foo<? extends Bar> X = new Y();
public void test(){
if X.isA(X.B()){
//do something; type mismatch here
}
}
}
インタフェース:
public interface Foo<T extends Bar> {
public T B();
public boolean isA(T t);
}
実装:問題の
public class Y implements Foo<T extends Bar> {
public int B(){
return 5;
}
public boolean isA(int num){
int A = 10;
return (A == num) ? true : false;
}
私のポイントは、メソッドのテスト(あります)。私はインターフェイスを介して番号を取得して、それから実装クラスの同じインスタンスでテストしますが、これは私にキャプチャ/タイプの不一致エラーを与えています。
CAP#1のキャプチャからバーを延長します。拡張バー
CAP#2のキャプチャからバーを拡張? extend Bar
私は検索で見つかった多くのことを試しましたが、それらのどれも働いていません。ジェネリックとインターフェイスは私には新しく、私はまだそれらを学んでいます。事前に助けてくれてありがとう!
は 'isA'ではなく、' int'の 'T'を取るべきではないでしょうか。または、クラスの署名が 'public class Y implements Foo' –
に変更されました。 '戻り値(A == num)? true:false; '単純に' return A == num; ' – Guy
Barクラスはどこですか? – pczeus