如何在Java中测试对象是原始类型还是原始类型数组?

le-*_*ude 2 java

这里是我想要实现的函数签名.

public boolean isBaseTypeOrArray(Object obj){~}
Run Code Online (Sandbox Code Playgroud)

只有当obj属于以下类型之一时,我才想返回true.

boolean or boolean[]
byte or byte[]
short or short[]
int or int[]
long or long[]
float or float[]
double or double[]
char or char[]
java.lang.String or String[]
Run Code Online (Sandbox Code Playgroud)

对于一个单独的值检查它是否是其中一个包装类(Integer,Float,...)的实例或String应该工作因为自动装箱,但我不知道如何检查数组的情况.有任何想法吗?

Psh*_*emo 9

要测试对象是否是数组,只需获取它的类并使用它getClass().
要获取元素类型数组可以使用isArray().
要测试type是否是原始的,您可以使用getComponentType().
如果你想检查类型是否类似String,请使用isPrimitive().

无论如何,这应该与您的问题中的类型匹配

public static boolean isBaseTypeOrArray(Object obj) {
    Class<?> c = obj.getClass();
    return  c.equals(String.class) 
         || c.equals(String[].class)
         || c.isArray() && c.getComponentType().isPrimitive();
}
Run Code Online (Sandbox Code Playgroud)