Necesito obtener el valor de un campo usando la reflexión. Sucede que no siempre estoy seguro de cuál es el tipo de datos del campo. Para eso, y para evitar cierta duplicación de código, he creado el siguiente método:
@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;
}
Y usa este método como:
Long value1 = getValueByReflection(inv.var1(), classUnderTest, runtimeInstance);
o
Double[] value2 = getValueByReflection(inv.var2(), classUnderTest, runtimeInstance);
El problema es que parece que no puedo enviar Integer
a Long
:
java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long
¿Existe una mejor manera de lograrlo?
Estoy usando Java 1.6.
Number[]
y un bucle sobre él para crear una matriz debidamente escrita, ¿verdad?