我正在阅读myBatis的一行源代码:
Set<Class<? extends Class<?>>> typeSet = resolverUtil.getClasses();我不明白什么是Class<? extends Class<?>>
类型?如何扩展Class<?>?所以它会自我扩展?
发布于 2019-12-18 20:43:11
? extends Class<?>是指扩展类java.lang.Class的任何类。然而,这是多余的,因为java.lang.Class被声明为final,因此不能被扩展(至少在当前和过去的版本中是如此)。
因此,声明可以安全地简化为
Set<Class<Class<?>>> typeSet = resolverUtil.getClasses();编辑
来自myBatis类ResolverUtil的方法的签名如下:
public Set<Class<? extends T>> getClasses()
是的,ResolverUtil本身是参数化的。它接受一个泛型参数T,该参数是一个可能有子类的类。getClasses()将返回T的部分或全部类型层次结构的类型(Class对象)。问题中的行将是以下声明的结果:
ResolverUtil<class<?>> resolverUtil = new ResolverUtil<>;https://stackoverflow.com/questions/59392013
复制相似问题