La conversion d'Entier Long

J'ai besoin d'obtenir la valeur d'un champ à l'aide de la réflexion. Il se trouve que je ne suis pas toujours sûr de ce que le type de données du champ. Pour cela, et afin d'éviter certains duplication de code, j'ai créé la méthode suivante:

@SuppressWarnings("unchecked")
private static <T> T getValueByReflection(VarInfo var, Class<?> classUnderTest, Object runtimeInstance) throws Throwable {
  Field f = classUnderTest.getDeclaredField(processFieldName(var));
  f.setAccessible(true);
  T value = (T) f.get(runtimeInstance);

  return value;
}

Et d'utiliser cette méthode comme:

Long value1 = getValueByReflection(inv.var1(), classUnderTest, runtimeInstance);

ou

Double[] value2 = getValueByReflection(inv.var2(), classUnderTest, runtimeInstance);

Le problème est que je n'arrive pas à lancer Integer à Long:

java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long

Est-il un meilleur moyen pour y parvenir?

J'utilise la version 1.6 de Java.

InformationsquelleAutor Tiago Veloso | 2011-07-14