オブジェクトを追加する予定のリストを以下のように宣言しています。
List<RecursableAction<Recursable, AbstractContext>> actions = new ArrayList<>();
私はIdGeneratorItemAction
以下のようなものを持っています:
public class IdGeneratorItemAction implements RecursableAction<Item, IdGeneratorContext> {
private IdGeneratorContext context;
@Override
public void act(Item recursable) {
}
}
インターフェイスRecursableAction
は次のようになります。
public interface RecursableAction<R extends Recursable, C extends AbstractContext> {
void act(R recursable);
}
次のように、のインスタンスを作成してリストIdGeneratorItemAction
に追加しようとしました。actions
RecursableAction<Recursable, AbstractContext> action = new IdGeneratorItemAction();
actions.add(action);
これを実行しようとすると、次のコンパイル エラーが発生します。
RecursableAction<Recursable, AbstractContext> action = new IdGeneratorItemAction();
^
Type mismatch: cannot convert from IdGeneratorItemAction to RecursableAction<Recursable,AbstractContext>
actions
の宣言をtoに変更してみました
List<RecursableAction<? extends Recursable, ? extends AbstractContext>> actions = new ArrayList<>();
しかし、それを行うと、 を反復処理できなくなりactions
ます。
for (RecursableAction<? extends Recursable, ? extends AbstractContext> action : actions) {
action.act(recursable);
^
The method act(capture#1-of ? extends Recursable) in the type RecursableAction<capture#1-of ? extends Recursable,capture#2-of ? extends AbstractContext> is not applicable for the arguments (Recursable)
}
この問題を解決するには?