Java のすべてのプリミティブ型には、同じ値と null を表すことができる参照型があることを理解しています。たとえば、int と java.lang.Integer です。
また、すべての配列 (java.lang.Object[] も含む) は java.lang.Object から派生していますが、非プリミティブ型の配列のみが java.lang.Object[] に変換できることも理解しています。
つまり、次のことができます。
Class type = Integer.class;
Object[] o = (Object[])java.lang.reflect.Array.newInstance(type, 4);
ただし、次の場合は例外になります。
Class type = int.class;
Object[] o = (Object[])java.lang.reflect.Array.newInstance(type, 4);
したがって、その特定のケースでは、次のことができます。
Class type = int.class;
Object o = java.lang.reflect.Array.newInstance(type, 4);
... Object[] に変換できない配列を表す Object に要素を追加する方法を疑問に思うまでは、これで問題ないようです。
この問題を回避する唯一の方法は、配列の要素の型を確認し、オブジェクトを適切にキャストすることですか?
すなわち:
if (type == int.class)
((int[])o)[0] = getFirstElement();
else if (type == short.class)
((short[])o[0] = getFirstElement();