首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >初级实例(包装器)

初级实例(包装器)
EN

Stack Overflow用户
提问于 2012-08-15 22:16:45
回答 2查看 1.3K关注 0票数 1

可能重复: 确定对象是否为原语类型

这听起来可能很蠢,但请原谅我,我在用低能儿代码。给定对象集合,识别原语(或者更准确地说,是原语包装器)的最佳方法是什么。

假设我想打印所有原语:

代码语言:javascript
复制
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);
   }
}

除了一个一个地枚举所有原语之外,这有可能吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-15 22:20:17

优秀的谷歌番石榴项目提供了一个Primitives.isWrapperType(类),可用作:

代码语言:javascript
复制
Primitives.isWrapperType(e.value().getClass())
票数 5
EN

Stack Overflow用户

发布于 2012-08-15 22:19:11

您可以检查每个可能的原语,或者,如果您知道没有任何BigXxx或AtomicXxx,也可以检查:

代码语言:javascript
复制
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的事实是一致的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11978139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档