page contents

泛型的一些问题请教 谢谢

Pack 发布于 2020-02-10 18:18
阅读 378
收藏 0

我看过不少关于泛型的学习 但是到现在
对 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

306
Pack
Pack

泛型的本质是参数化数据类型,也就是说将所操作的数据类型指定为一个参数。
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);
加<?>只是为了方便类型转换

请先 登录 后评论