143 votes

Conversion d'un entier en un long

J'ai besoin d'obtenir la valeur d'un champ en utilisant la réflexion. Il se trouve que je ne suis pas toujours sûr du type de données du champ. Pour cette raison, et pour éviter la duplication du 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 utiliser cette méthode comme :

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

ou

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

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

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

Existe-t-il un meilleur moyen d'y parvenir ?

J'utilise Java 1.6.

-3voto

Joydeep Dutta Points 7

Dans le cas d'une liste de type Long, ajout d'un L à la fin de chaque valeur entière

List<Long> list = new ArrayList<Long>();
list  = Arrays.asList(1L, 2L, 3L, 4L);

-4voto

lemonzone2010 Points 63

Essayer de convertirValeur par Jackson

ObjectMapper mapper = new ObjectMapper()
Integer a = 1;
Long b = mapper.convertValue(a, Long.class)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X