Программа для интерфейсов!
Map<Temp, ? extends Action> p = new HashMap<Temp, ? extends Action>();
Его лучшая практика.
Я заметил, что, возможно, на это не ответил правильно. Проблема подробно объясняется here. Что будет работать для вас, возможно,
Map<Temp, ? super Action> p = new HashMap<Temp, Action>();
Надеюсь, что это поможет.
Третье изменение, я новичок в написании комментария так, обратите внимание, уверен, что этот процесс, так или иначе, вот пример:
public void doSomething()
{
Map<A, ? super A> p = new HashMap<A, A>();
A a1 = new A();
A a2 = new A();
// AS A CONSUMER
// Not a problem because at runtime we'll know we can accept A.
p.put(a1, new B());
p.put(a2, new C());
// AS A PRODUCER
// what do I cast to? No way of knowing if its B or C.
for (Object a : p.values())
{
}
// Same deal as above is it B or C?
p.get(a1);
}
class A{}
class B extends A {}
class C extends B {}
Пожалуйста, переформатируйте. Он не отображается должным образом. – jn1kk
Не используйте '<>' around'? расширяет действие' ... и вы будете ближе к тому, чтобы быть правым. –
Ошибка не в Java Generics. –