В моем коде я должен хранить коллекцию пар, оба из которых являются классами универсальных типов, которые содержат одинаковое возвращаемое значение универсального типа (GenericTypeA<T>
и GenericTypeB<T>
, где T всегда будет одинаковым в каждой паре)вот так:
private HashMap<GenericTypeA<T>, GenericTypeB<T>> myMap;
Конечно, я не могу объявить карту таким образом, так как она использует разные Ts для некоторых пар, поэтому я использовал:
private HashMap<GenericTypeA, GenericTypeB> myMap;
Учитываяобъект GenericTypeA<T>
, мой код должен выполнять метод с использованием T на GenericTypeB<T>
public <T> void foo(GenericTypeA<T> key, T t){
GenericTypeB<T> value = myMap.get(key);
value.goo(t);
}
Я получаю unchecked assignment
предупреждение в строке GenericTypeB<T> toResolve = myMap.get(key);
, приведение значения в GenericTypeB<T>
тоже не работает.Необходимо, чтобы значение было GenericTypeB<T>
, поскольку его метод goo()
получает (T t)
в качестве параметра.
В любом случае я могу улучшить свой код без подавления предупреждений?
(используяJava, Intellij ide)