Интересное непроверенное предупреждение
Учитывая этот код:
public final class MyMap extends HashMap<MyClass<? extends MyInterface>, MyInterface>
{
public <T extends MyInterface> T put(MyClass<T> key, T value)
{
return (T)key.getClass().getComponentType().cast(super.put(key, value));
}
}
Я получаю непроверенное предупреждение о приведении актеров от MyInterface к T.
Мне действительно это не нравится, поэтому я использую метод Class.cast() для его приведения. Теперь моя новая функция выглядит так:
public final class MyMap extends HashMap<MyClass<? extends MyInterface>, MyInterface>
{
public <T extends MyInterface> T put(MyClass<T> key, T value)
{
Class<T> cl = (Class<T>)key.getClass().getComponentType();
return cl.cast(super.put(key, value));
}
}
Но этот выводит непроверенное предупреждение о приведении класса> К классу
Однако есть ли вероятность того, что key.getClass(). GetComponentType() не вернет Class