奇妙な動作に気付きました。例を見てください。
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だけでは使用しませんが、多くのプリミティブ(およびプリミティブではない)を使用します..