Я искал в Интернете, но не нашел подходящего решения.Назначить массив объектов с элементами Integer в массив Integer
В моем приложении у меня есть массив целых чисел. Мне нужно получить доступ (присваивать) массив через отражение. Приложение создает массив объектов, содержащий элементы Integer. Java не позволяет присваивать этот массив Object массиву Integer.
Невозможно ли на Java? Мое приложение знает только класс Object поля Integer array. Код динамически. Тип может быть произвольным.
private final Integer[] destArray = new Integer[2];
public static void main(final String[] args) throws Exception {
final ReloadDifferentObjectsTest o = new ReloadDifferentObjectsTest();
final Object[] srcArray = {Integer.valueOf(1), Integer.valueOf(2)};
final Field f = o.getClass().getDeclaredField("destArray");
f.setAccessible(true);
// first trial
// f.set(o, srcArray);
// second trial
// Object tmpArray = Array.newInstance(f.getType().getComponentType(), srcArray.length);
// tmpArray = Arrays.copyOfRange(srcArray, 0, srcArray.length);
// f.set(o, tmpArray);
// third trial
Object tmpArray = Array.newInstance(f.getType().getComponentType(), srcArray.length);
tmpArray = f.getType().getComponentType().cast(Arrays.copyOfRange(srcArray, 0, srcArray.length));
f.set(o, tmpArray);
}