我看过不少关于泛型的学习 但是到现在
对 T,?,Object还是有点茫然
比如
public class<?> m1(){}.
public Object m2(){}…
public T m3(){}
这3种方法 返回 我到底什么时候用哪种吃不准
Class<?> clazz = Class.forName(className); 这个能写成
T clazz = Class.forName(className)吗 或者
Class = Class.forName
我看过不少关于泛型的学习 但是到现在
对 T,?,Object还是有点茫然
比如
public class<?> m1(){}.
public Object m2(){}…
public T m3(){}
这3种方法 返回 我到底什么时候用哪种吃不准
Class<?> clazz = Class.forName(className); 这个能写成
T clazz = Class.forName(className)吗 或者
Class = Class.forName
最佳答案 2019-12-24 16:49
泛型的本质是参数化数据类型,也就是说将所操作的数据类型指定为一个参数。
Object类是所有Java类的祖先,每个类都使用 Object 作为超类
表示泛型可以是任意类型
泛型使用时必须先指定其类型,这样就可以使用其自定义的方法
泛型本质上也是Object,所有返回泛型的地方都是可以使用Object的,但是使用Object就不能使用泛型代表类型中自定义的方法(必须进行强转)
一般结合extends或super使用:< ? extends 类名>,< ? super 类名>;表示泛型是指定类型的子类或父类
Class<?> clazz = Class.forName(className);如果要写成T clazz = Class.forName(className);
你得指定T为Class类型
Class<?> clazz = Class.forName(className);可以写成Class clazz = Class.forName(className);
加<?>只是为了方便类型转换