我搜索了互联网,但没有找到任何合适的解决方案。
在我的应用程序中,我有一个整数数组。我需要通过反射访问(分配给)数组。应用程序创建一个包含 Integer 元素的对象数组。Java 不允许将此 Object 数组分配给 Integer 数组。
在Java中不可能吗?我的应用程序只知道整数数组字段的类对象。代码是动态的。类型可以是任意类型。
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);
}