黑马程序员技术交流社区
标题:
自定义泛型<t>与<?>有什么区别
[打印本页]
作者:
王轶
时间:
2011-9-25 10:15
标题:
自定义泛型<t>与<?>有什么区别
自定义泛型<t>与<?>有什么区别
如题
作者:
匿名
时间:
2011-9-25 10:32
区别就是某一类型是确定的,通配符只能调用与参数类型无关的方法,而T类型可以调用与参数类型相关的方法。
作者:
许晨峰
时间:
2011-9-25 10:38
写<?>一般编译器不会通过的,要么指定类型,要么不写类型。
而在自定义类型的泛型,在调用的时候不需要强制类型转换,在接收的时候则只能接受同一种类型。
不写类型,默认是指定object类型,这时在接收时,可以接收任意类型。在调用时,根据自身的实际需求看是否进行类型转换。
这两种情况要分清楚自己程序的需要来决定使用哪种方式使用泛型
[
本帖最后由 许晨峰 于 2011-09-25 10:39 编辑
]
作者:
匿名
时间:
2011-9-25 16:40
使用<T>来声明类型持有者名称,自定义泛型类时,类持有者名称可以使用T(Type),如果是容器的元素可以使用E(Element),若键值匹配可以用K(Key)和V(Value)等,若是<?>,则是默认是允许Object及其下的子类,也就是java的所有对象了。
作者:
匿名
时间:
2011-9-25 17:55
如果是方法返回值或者类的泛型要和参数泛型一样,则用<T>
另外如果你有两个参数,都要求有同样的泛型,用<T>
作者:
赵江锋
时间:
2011-9-25 19:03
使用<T>来声明类型持有者名称,自定义泛型类时,类持有者名称可以使用T(Type),如果是容器的元素可以使用E(Element),若键值匹配可以用K(Key)和V(Value)等,若是<?>,不写类型,默认是指定object类型,这时在接收时,可以接收任意类型。在调用时,根据自身的实际需求看是否进行类型转换。
[
本帖最后由 赵江锋 于 2011-09-25 19:04 编辑
]
作者:
许冉
时间:
2011-9-25 19:27
我是这么理解的,先区分 再学会选择用哪个
?表示这里要写一个已有的类名,只是不知道是哪个类名而已
要用T,那么就得先定义T,在哪定义,在类名的后面或方法返回值的前面
public static void show(Collection<?> c)
public static <T> void show(Collection<T> c)
这面两种对方法的定义是一样的
看懂这两句就能将它们区分开来
在show方法中想要用未知类型的变量
? x; //这是不允许的,? 不能拿来定义一个变量
T x; //这样写没问题
看懂这两句就会选择用哪个了
[
本帖最后由 xuan 于 2011-09-25 23:41 编辑
]
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2