为什么我们首先需要isPrimitive()?

时间:2019-03-28 11:44:02

标签: java java-8 primitive-types

很抱歉,这个不清楚的问题,但是我真的迷失了为什么首先需要isPrimitive()的原因,因为我无法使用它(对不起,当我需要它时,我就无法使用它;(这里是可悲​​的表情)。

在各处阅读文章后,我发现了一些用法

int.class.isPrimitive()

但是我想要一些东西

boolean isTrue = true;
System.out.println(isTrue.class.isPrimitive());
System.out.println(Boolean.valueOf(isTrue).getClass().isPrimitive());

我试图遍历对象的字段时检查类型;我现在能做的就是

private static boolean isPrimitiveWrapper(Object obj) {
    return obj.getClass() == Boolean.class ||
            obj.getClass() == Byte.class ||
            obj.getClass() == Character.class ||
            obj.getClass() == Short.class ||
            obj.getClass() == Integer.class ||
            obj.getClass() == Long.class ||
            obj.getClass() == Float.class ||
            obj.getClass() == Double.class;
}

但是在检查之后,我认为它应该有问题,但是我不知道它是什么。

任何用例都会受到感激;)

我正试图不要太偏执...已经很努力了

1 个答案:

答案 0 :(得分:9)

由于在某些情况下,原始类型不能作为对象处理,例如数组, 很适合作为第一个鉴别器。

Object cloneObject(Object obj) {
    Class<?> type = obj == null ? Object.class : obj.getClass();
    if (type.isArray()) {
        Class<?> elemType = type.getComponentType();
        if (!elemType.isPrimitive()) {
            Object[] copy = ...
        } else {
            // Must distinguish between int/double/boolean/...
            ... int[] ... double[] ...
        }
    }

Object inta = new int[] { 2, 3, 5, 7 };
int[] pr = (int[]) cloneObject(inta);