首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >泛型中使用的InstanceOf方法?

泛型中使用的InstanceOf方法?
EN

Stack Overflow用户
提问于 2012-02-15 13:39:20
回答 1查看 1.5K关注 0票数 0

由于泛型类型信息在运行时被擦除,因此对非无界通配符类型的参数化类型使用instanceof运算符是非法的。

我从有效的java版本2中摘录了这句话。它说,使用instanceOf的首选方法是:

代码语言:javascript
复制
// Legitimate use of raw type - instanceof operator
if (o instanceof Set) { // Raw type
Set<?> m = (Set<?>) o; // Wildcard type
...
}

有人能解释一下这个概念吗?(我理解了具体化和擦除的概念)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-15 13:48:51

如果您了解erasure的工作原理,就会知道instanceof无法检查被擦除的类型,因此它只能与原始类型一起使用。

同样,在确定对象是某种类型的集合之后,您无法确定该集合具有哪种类型。因此,您只能(安全地)使用Set<?> (这意味着您从集合中提取的所有内容都不能缩小到超过Object的范围,并且您根本不能放入任何内容)。

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

https://stackoverflow.com/questions/9288406

复制
相关文章

相似问题

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