インターネットで検索しましたが、適切な解決策が見つかりませんでした。
私のアプリケーションでは、整数の配列を持っています。リフレクションを介して配列にアクセス (割り当て) する必要があります。アプリケーションは、Integer 要素を含むオブジェクト配列を作成します。Java では、この Object 配列を Integer 配列に割り当てることはできません。
Javaではできませんか?私のアプリケーションは、Integer 配列フィールドのクラス オブジェクトしか知りません。コードは動的です。型は任意の型でよい。
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);
}