首页  >  文章  >  Java  >  如何确定一个对象是否是 Java 中原始值的包装类型?

如何确定一个对象是否是 Java 中原始值的包装类型?

DDD
DDD原创
2024-11-02 05:34:30347浏览

How to Determine if an Object is a Wrapper Type for Primitive Values in Java?

对象是原始的吗?

使用对象数组时,可能需要确定是否有任何元素是原始的类型。 Class.isPrimitive() 方法不提供对象的预期结果,例如示例中的:

int i = 3;
Object o = i;

System.out.println(o.getClass().getName() + ", " +
                   o.getClass().isPrimitive());

,其打印:

java.lang.Integer, false

问题

问题是 Object[] 数组包含引用,而不是基元。因此,Class.isPrimitive() 对于对象总是返回 false,即使它们代表原始值。

解决方案

确定一个对象是否是一个包装器原始类型,没有内置的库函数。但是,可以创建自定义解决方案:

<code class="java">import java.util.*;

public class Test {
    public static void main(String[] args) {
        System.out.println(isWrapperType(String.class));  // false
        System.out.println(isWrapperType(Integer.class)); // true
    }

    private static final Set<Class<?>> WRAPPER_TYPES = getWrapperTypes();

    public static boolean isWrapperType(Class<?> clazz) {
        return WRAPPER_TYPES.contains(clazz);
    }

    private static Set<Class<?>> getWrapperTypes() {
        Set<Class<?>> ret = new HashSet<Class<?>>();
        ret.add(Boolean.class);
        ret.add(Character.class);
        ret.add(Byte.class);
        ret.add(Short.class);
        ret.add(Integer.class);
        ret.add(Long.class);
        ret.add(Float.class);
        ret.add(Double.class);
        ret.add(Void.class);
        return ret;
    }
}</code>

此解决方案使用 HashSet 来存储包装器类型。当检查一个类是否是包装器时,该集合用于验证它是否包含该类。

以上是如何确定一个对象是否是 Java 中原始值的包装类型?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn