Мне нужно получить значение поля с помощью отражения. Так получилось, что я не всегда уверен, что это за тип данных поля. Для этого и во избежание некоторого дублирования кода я создал следующий метод:
@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;
}
И используйте этот метод, например:
Long value1 = getValueByReflection(inv.var1(), classUnderTest, runtimeInstance);
или
Double[] value2 = getValueByReflection(inv.var2(), classUnderTest, runtimeInstance);
Проблема заключается в том, что я не могу показаться , чтобы бросить Integer
на Long
:
java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long
Есть ли лучший способ добиться этого?
Я использую Java 1.6.
Number[]
и цикл над ним, чтобы создать правильно типизированный массив, верно?