为了账号安全,请及时绑定邮箱和手机立即绑定

确定对象是否是原始类型

确定对象是否是原始类型

偶然的你 2019-08-08 14:46:37
确定对象是否是原始类型我有一个Object[]数组,我试图找到原始的数组。我试过用Class.isPrimitive(),但似乎我做错了什么:int i = 3;Object o = i;System.out.println(o.getClass().getName() + ", " +                    o.getClass().isPrimitive());打印java.lang.Integer, false。有正确的方法或替代方案吗?
查看完整描述

3 回答

?
largeQ

TA贡献2039条经验 获得超7个赞

一个中的类型Object[]永远不会真正原始 - 因为你有参考!这里的类型i是,int而引用的对象的类型oInteger(由于自动装箱)。

听起来你需要找出这个类型是否是“原始包装器”。我不认为标准库中有任何内置,但编码很容易:

import java.util.*;public class Test{
    public static void main(String[] args)        
    {
        System.out.println(isWrapperType(String.class));
        System.out.println(isWrapperType(Integer.class));
    }

    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;
    }}


查看完整回答
反对 回复 2019-08-08
?
噜噜哒

TA贡献1784条经验 获得超7个赞

commons-lang ClassUtils有相关的方法

新版本有:

boolean isPrimitiveOrWrapped = 
    ClassUtils.isPrimitiveOrWrapper(object.getClass());

旧版本有wrapperToPrimitive(clazz)方法,它将返回原始对应关系。

boolean isPrimitiveOrWrapped = 
    clazz.isPrimitive() || ClassUtils.wrapperToPrimitive(clazz) != null;


查看完整回答
反对 回复 2019-08-08
  • 3 回答
  • 0 关注
  • 470 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信