确定对象是否是原始类型我有一个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
而引用的对象的类型o
是Integer
(由于自动装箱)。
听起来你需要找出这个类型是否是“原始包装器”。我不认为标准库中有任何内置,但编码很容易:
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; }}
噜噜哒
TA贡献1784条经验 获得超7个赞
commons-lang ClassUtils
有相关的方法。
新版本有:
boolean isPrimitiveOrWrapped = ClassUtils.isPrimitiveOrWrapper(object.getClass());
旧版本有wrapperToPrimitive(clazz)
方法,它将返回原始对应关系。
boolean isPrimitiveOrWrapped = clazz.isPrimitive() || ClassUtils.wrapperToPrimitive(clazz) != null;
添加回答
举报
0/150
提交
取消