Есть ли альтернативный способ идентификации экземпляра многомерного объекта без жесткого кода на нем?Как идентифицировать экземпляр многомерного объекта в java?
//source
import java.util.LinkedList;
import java.util.List;
public class Test {
public static <T> boolean isPrimitiveWrapper(T p_obj) throws Exception {
if (Number.class.isInstance(p_obj) || Number[].class.isInstance(p_obj)) {
return true;
} else if (Boolean.class.isInstance(p_obj) || Boolean[].class.isInstance(p_obj)) {
return true;
} else if (Character.class.isInstance(p_obj) || Character[].class.isInstance(p_obj)) {
return true;
}
return false;
}
public static void main(String[] args) throws Exception {
Integer[][][] a = {{{0}}, {{1}}, {{0}}};
println(isPrimitiveWrapper(a));
println(isPrimitiveWrapper(a[0]));
println(isPrimitiveWrapper(a[0][0]));
println(isPrimitiveWrapper(a[0][0][0]));
}
public static <T> void println(T p_t) {
System.out.println(p_t);
}
}
//Actual Result
false
false
true
true
//Expected Result
true
true
true
true
Основываясь на приведенном выше примере, у нас нет никаких проблем, чтобы иметь дело с не-массивом & одного объекта одномерного массива, но не в состоянии идентифицировать многомерный массив объекты.
Это слишком уродливое для жесткого кодирования количество измерений.
Как вы определяете «примитивную обертку»? Непонятно, что скрывается именно за вашей концепцией. –