Java基本功:判断是否基本类型

有时候,我们需要判断变量的是否基本类型。

简单做下实验:

1
2
3
4
5
6
7
8
9
public static void main(String[] args) {
Object object = "a string";
Object oNumber = 1;
Class className = object.getClass();
System.out.println(className);
System.out.println(className.equals(java.lang.String.class));
System.out.println(oNumber.getClass());
System.out.println(oNumber.getClass().equals(java.lang.Integer.class));
}

输出:

1
2
3
4
class java.lang.String
true
class java.lang.Integer
true

于是,可以这样写:

public static Boolean isPrimitive(Object object) {
    Class className = object.getClass();
    return (className.equals(java.lang.String.class)
            || className.equals(java.lang.Integer.class)
            || className.equals(java.lang.Byte.class)
            || className.equals(java.lang.Long.class)
            || className.equals(java.lang.Double.class)
            || className.equals(java.lang.Float.class)
            || className.equals(java.lang.Character.class)
            || className.equals(java.lang.Short.class)
            || className.equals(java.lang.Boolean.class));
}

最近看一些开源的 json diff 源码中也是这样判断的。