我写了一个函数,它将变量参数作为对象。
当我传入一个大小为 1 的整数数组(例如 {9})时,它会将 args[0] 视为 int array[] 而不是 int,因此valueOf不会产生 9。
但是如果传入 2 个或更多整数的数组,例如 {9,11},那么它会将 args[0] 视为 9,将 args[1] 视为 11。为什么它的行为不同。
请注意,它是为 Android 编写的。
protected String[] whereArgs(Object...args) {
String[] argsStrings = new String[args.length];
for (int i = 0; i < args.length; i++) {
if (args[i] instanceof String){
argsStrings[i] = (String)args[i];
} else {
argsStrings[i] = String.valueOf(args[i]);
}
}
return argsStrings;
}
编辑再看看我实际上是在两个整数场景中以不同的方式传递它们,一个一个而不是一个数组,对不起。
当我传入一个整数数组时,为什么它不将方法(对象...args)拆分为一个对象数组,就像方法(int...args)发生的情况一样
所以现在要获取字符串值,我必须单独转换数组的类型,例如。对于 int[],双 []
if (args[0] instanceof int[]){
argsStrings[0] = String.valueOf(((int[])args[0])[0]);
有没有办法为任何类型的对象编写它,因为这会导致崩溃
argsStrings[0] = String.valueOf(((Object[])args[0])[0]);
java.lang.ClassCastException:int[] 不能转换为 java.lang.Object[]