Devo ottenere il valore di un campo usando la riflessione. Accade così che non sono sempre sicuro di quale sia il tipo di dati del campo. Per questo, e per evitare la duplicazione del codice, ho creato il seguente metodo:
@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;
}
E usa questo metodo come:
Long value1 = getValueByReflection(inv.var1(), classUnderTest, runtimeInstance);
o
Double[] value2 = getValueByReflection(inv.var2(), classUnderTest, runtimeInstance);
Il problema è che non riesco a trasmettere Integer
a Long
:
java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long
C'è un modo migliore per raggiungere questo obiettivo?
Sto usando Java 1.6.
Number[]
e un ciclo su di esso per creare un array digitato in modo appropriato, giusto?