可能重复: 确定对象是否为原语类型
这听起来可能很蠢,但请原谅我,我在用低能儿代码。给定对象集合,识别原语(或者更准确地说,是原语包装器)的最佳方法是什么。
假设我想打印所有原语:
HashMap<String,Object> context = GlobalStore.getContext(); // Some bizarre, strangely populated context
for(Entry<String,Object> e : context.entrySet()){
if(e.value() instanceof PRIMITIVE){ // What goes here?
System.out.println(e);
}
}除了一个一个地枚举所有原语之外,这有可能吗?
发布于 2012-08-15 22:20:17
优秀的谷歌番石榴项目提供了一个Primitives.isWrapperType(类),可用作:
Primitives.isWrapperType(e.value().getClass())发布于 2012-08-15 22:19:11
您可以检查每个可能的原语,或者,如果您知道没有任何BigXxx或AtomicXxx,也可以检查:
if(e.value() instanceof Number || e.value() instanceof Boolean || e.value() instanceof Character)Number
AtomicInteger, AtomicLong, BigDecimal, BigInteger, Byte, Double, Float, Integer, Long, Short
原语列表
布尔,字节,短,int,长,字符,浮点数,双
但是考虑到只有8种基本类型,您最好检查它们,并将测试放入实用方法中。
ps:请注意,番石榴和在可能重复中链接的答案也包含了Void,这与System.out.println(void.class.isPrimitive());打印true的事实是一致的。
https://stackoverflow.com/questions/11978139
复制相似问题