У меня длинная история.Кастинг родовых типов без предупреждения?
generics type declaration for reflection
Во всяком случае, у меня есть метод, который вызывает метод с помощью отражения и возвращает общий результат.
public static <V> JAXBElement<V> unmarshal(..., Class<V> valueType);
Проблема (?) Возникает, когда я получил результат вызова метода. Я должен бросить его.
final Object result = method.invoke(...);
я обнаружил, что могу бросить result
в JAXBElement<V>
, как это.
@SuppressWarnings("unchecked")
final JAXBElement<V> result = (JAXBElement<V>) method.invoke(...);
return result;
Есть ли другой способ для этого? Я имею в виду, что я использовал Class<V> valueType
.
Если нет, следует следующее заявление немного cumbersome
?
// no warning, huh? :)
final JAXBElement<?> result = (JAXBElement<?>) method.invoke(...);
return new JAXBElement<V>(result.getName(), valueType, result.getScope(),
valueType.cast(result.getValue()));
Спасибо.
Woops! Обновлено. Благодарю. –