奇妙な動作に気付きました。例を見てください。
public static void main(String[] args) {
aaa(1,2);
}
public static void aaa(int... a){
bbb(a);
ccc(a);
}
public static void bbb(int... a){
}
public static void ccc(Object... a){
}
オンbbb aは配列 {1,2} ( a = {1,2})
Onccc aは、最初の配列値が {1,2} である配列の配列です ( a = { {1,2} })
私のコードには、 として定義しなければならない場所がありますObject。しかし、もちろん、2 番目の動作は望ましくありません。両方の定義に対して同じ動作が必要です ( と の両方Object...にint...が含まれます{1,2})。どうすればいいのですか?
優先値は値の配列であり、配列の配列ではありません。たとえば、bbbパラメーターは問題なく、目的のパラメーターcccは{1,2}type からのものObjectです。
このようなことをしようとすると、内部配列を取得するために失敗します:
public static void ccc(Object... a){
ArrayList<Object> list = new ArrayList<>();
if(a.getClass().isArray()){
for(Object in_obj: (Object[])obj){
list.add(in_obj);
}
}
// rest of the code..
}
エラー:java.lang.ClassCastException: I cannot be cast to java.lang.Object[]配列がプリミティブであるため..その解決策はありますか? 私はintだけでは使用しませんが、多くのプリミティブ(およびプリミティブではない)を使用します..