J'ai une longue histoire.
déclaration de type générique pour la réflexion
Quoi qu'il en soit, j'ai une méthode qui invoque une méthode en utilisant la réflexion et renvoie un résultat générique.
public static <V> JAXBElement<V> unmarshal(..., Class<V> valueType);
Le problème ( ?) est que lorsque j'obtiens le résultat de l'invocation de la méthode. Je dois le convertir.
final Object result = method.invoke(...);
J'ai découvert que je peux lancer le result
sur JAXBElement<V>
comme ça.
@SuppressWarnings("unchecked")
final JAXBElement<V> result = (JAXBElement<V>) method.invoke(...);
return result;
Y a-t-il un autre moyen de faire cela ? Je veux dire que j'ai obtenu le Class<V> valueType
à utiliser.
Si non, est-ce que la déclaration suivante est un peu cumbersome
?
// no warning, huh? :)
final JAXBElement<?> result = (JAXBElement<?>) method.invoke(...);
return new JAXBElement<V>(result.getName(), valueType, result.getScope(),
valueType.cast(result.getValue()));
Merci.