我有一个 Object[]
数组,我正试图找到那些是原语的。我尝试使用 Class.isPrimitive()
,但似乎我做错了什么:
int i = 3;
Object o = i;
System.out.println(o.getClass().getName() + ", " +
o.getClass().isPrimitive());
打印 java.lang.Integer, false
.
有没有正确的方法或替代方法?
最佳答案
Object[]
中的类型永远不会真正是原始的 - 因为你有引用!这里 i
的类型是 int
而 o
引用的对象的类型是 Integer
(由于 auto -拳击)。
听起来您需要确定该类型是否是“原始包装器”。我认为标准库中没有为此内置任何内容,但编写代码很容易:
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;
}
}
关于java - 确定对象是否为原始类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/709961/