Мені потрібно отримати значення поля за допомогою відображення. Так трапляється, що я не завжди впевнений, що таке тип даних поля. Для цього і щоб уникнути дублювання коду, я створив наступний метод:
@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[]
і цикл над ним, щоб створити масив, який належним чином вводиться, чи не так?