我只是注意到一个奇怪的行为,看看这个例子:
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){
}
Onbbb
a
是一个数组 {1,2} ( a = {1,2}
)
Onccc
a
是数组的数组,其第一个数组值为 {1,2} ( a = { {1,2} }
)
我的代码中有一些地方我必须将其定义为Object
. 但是当然不需要第二种行为。我希望两个定义的行为相同(两者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,而是使用很多原始(而不是原始)..