首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是`Set<Class<?extends Class<?>>> typeSet = resolverUtil.getClasses();`表示?

什么是`Set<Class<?extends Class<?>>> typeSet = resolverUtil.getClasses();`表示?
EN

Stack Overflow用户
提问于 2019-12-18 20:25:52
回答 1查看 78关注 0票数 2

我正在阅读myBatis的一行源代码:

代码语言:javascript
复制
Set<Class<? extends Class<?>>> typeSet = resolverUtil.getClasses();

我不明白什么是Class<? extends Class<?>>

类型?如何扩展Class<?>?所以它会自我扩展?

EN

回答 1

Stack Overflow用户

发布于 2019-12-18 20:43:11

? extends Class<?>是指扩展类java.lang.Class的任何类。然而,这是多余的,因为java.lang.Class被声明为final,因此不能被扩展(至少在当前和过去的版本中是如此)。

因此,声明可以安全地简化为

代码语言:javascript
复制
Set<Class<Class<?>>> typeSet = resolverUtil.getClasses();

编辑

来自myBatis类ResolverUtil的方法的签名如下:

public Set<Class<? extends T>> getClasses()

是的,ResolverUtil本身是参数化的。它接受一个泛型参数T,该参数是一个可能有子类的类。getClasses()将返回T的部分或全部类型层次结构的类型(Class对象)。问题中的行将是以下声明的结果:

代码语言:javascript
复制
ResolverUtil<class<?>> resolverUtil = new ResolverUtil<>;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59392013

复制
相关文章

相似问题

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