在网站上看到了一个大佬提到的问题,他当时看不懂,我也是有些疑惑,然后又大佬给了解释,这里我把问题和解释都放出来,如果小伙伴看到欢迎探讨
private Class<?> clazz;
public <T> Class<T> getClazz() {
return (Class<T>) clazz;
}
这个方法,为什么不能直接写成
private Class clazz;
public Class getClazz() {
return clazz;
}
但是在之前可能有的小伙伴不知道这个是啥,
Class<?> : 是表示类型不确定的类
T 是单独的T : 代表一个类型(表现形式是一个类名而已)
Class : 是代表这个类型所对应的类(又可以称做类实例、类类型、字节码文件)
大佬给了解释:
public Class getClazz() 这一句前一个T规定了什么类型的类才可以调用这个方法,后一个T规定了返回值类型。
private Class<?> clazz; //泛型通配符,意思是可以赋值给clazz任何类型的Class对象
public Class getClazz() {//泛型,意思是,当调用这个方法时,就确定了T的类型
return (Class) clazz;
}
解释就这么多,如果小伙伴还有更好的理解,欢迎积极评论!