确定对象是否是原始类型我有一个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条经验 获得超8个赞
一个中的类型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
提交
取消
