page contents

泛型的一些问题请教

Pack 发布于 2019-12-24 16:48
阅读 907
收藏 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

最佳答案 2019-12-24 16:49

18
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);

加<?>只是为了方便类型转换

请先 登录 后评论