Определяет отношение наследования параметризованных генерических типов недостаточно для обеспечения безопасности типа? Например:Расширение Java Generics по-прежнему генерирует предупреждение без предупреждения
public class ListCastFunction<F, T extends F> implements Function<F, T> {
public final T apply(final F from) {
return (T) from;
}
}
Это все еще генерирует предупреждение о компиляторе. Если мы знаем T extends F
, разве это действительно не проверено?
Спасибо. Есть ли явно требование, чтобы заданный 'F' был' T' без преднамеренной проверки? –
Используйте 'T' в своей декларации, а не' F'? – sisyphus
@CannonPalms - единственный способ гарантировать, что 'F' является' T', если 'F extends T' - и тогда вам не нужно было бы бросать - но вы также можете просто использовать' new ArrayList (listOfT) 'слишком , без необходимости «ListCastFunction». –