シンプルなデザインとシンプルなコードとして認識されないが、コンパイルされません。のJava:コレクション内のインタフェースパラメータ
public interface Insertable {
public String getInsertStmt(String table);
}
public class ClassCanBeInserted implements Insertable {
public String getInsertStmt(String table) {}
}
public class SomeClass {
public static void main() {
List<ClassCanBeInserted> list = new ArrayList<ClassCanBeInserted>();
SomeMethod(list);
}
private static void SomeMethod(List<Insertable> list) {}
}
とのsomeMethod(への呼び出し)がコンパイルされません。英語は貧しいが、コードは説明する必要があります。誰かが何が間違っているのか、インターフェイス実装のクラスのリストをそのようなメソッドで使用できるようにするためのデザインを取得する方法を教えてください。
この場合も、英語は貧弱なので、よく表現されていない可能性があります。あなたの質問を教えてください。ありがとう!
エラーメッセージは、指定された: タイプClassCanBeInsertedのメソッドのsomeMethod(リスト)Insertable
をClassCanBeInserted
のスーパークラスであっても、List<ClassCanBeInserted>
のスーパー引数(リスト)
ありがとうございました!それは機能し、答えは明確で正確です。 –
ありがとう、これは私の問題を解決するのに役立ちました。さらに、関数内でジェネリック型のオブジェクトを宣言したい場合は、 'public static void SomeMethod(List list){}'で関数を宣言することができます。その型の変数を 'T varName; 'で宣言することができます –