博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java泛型中<?>和<T>有什么区别?
阅读量:6147 次
发布时间:2019-06-21

本文共 1153 字,大约阅读时间需要 3 分钟。

public static void printColl(ArrayList
al) { Iterator
it = al.iterator(); while (it.hasNext()) { System.out.println(it.next().toString()); } }

?和T都表示不确定的类型  但如果是T的话 函数里面可以对T进行操作 比如while里面可以这样写

T t = it.next();System.out.println(t);

 

T自定义泛型和?通配符泛型

1.在整个类中只有一处使用了泛型,使用时注意加了泛型了参数不能调用与参数类型有关的方法比如“+”,比如打印出任意参数化类型集合中的所有内容,就适合用通配符泛型<?>

public static void printCollecton(Collection
collection) { for (Object obj : collection) { System.out.println(obj); } }

2. 当一个类型变脸用来表达两个参数之间或者参数与返回值之间的关系时,即统一各类型变量在方法签名的两处被使用,或者类型变量在方法体代码中也被使用而不仅 仅在签名的时候使用,这是应该用自定义泛型<T>。泛型方可以调用一些时间类型的方法。比如集合的add方法。

public static 
T autoConvertType(T obj) { return (T) obj; }

总结:

泛型三种:            ArrayList
al=new ArrayList
();指定集合元素只能是T类型;T 代表一种类型   ArrayList
al=new ArrayList
();集合元素可以是任意类型,这种没有意义,一般是方法中,只是为了说明用法;?是通配符,泛指所有类型   ArrayList
al=new ArrayList
();  泛型的限定:   ? extends E:接收E类型或者E的子类型。   ?super E:接收E类型或者E的父类型。

 

转载于:https://www.cnblogs.com/diandianquanquan/p/10640781.html

你可能感兴趣的文章
Windows 8.1 应用再出发 - 视图状态的更新
查看>>
自己制作交叉编译工具链
查看>>
Qt Style Sheet实践(四):行文本编辑框QLineEdit及自动补全
查看>>
[物理学与PDEs]第3章习题1 只有一个非零分量的磁场
查看>>
深入浅出NodeJS——数据通信,NET模块运行机制
查看>>
onInterceptTouchEvent和onTouchEvent调用时序
查看>>
android防止内存溢出浅析
查看>>
4.3.3版本之引擎bug
查看>>
SQL Server表分区详解
查看>>
使用FMDB最新v2.3版本教程
查看>>
SSIS从理论到实战,再到应用(3)----SSIS包的变量,约束,常用容器
查看>>
STM32启动过程--启动文件--分析
查看>>
垂死挣扎还是涅槃重生 -- Delphi XE5 公布会归来感想
查看>>
淘宝的几个架构图
查看>>
Android扩展 - 拍照篇(Camera)
查看>>
数据加密插件
查看>>
linux后台运行程序
查看>>
win7 vs2012/2013 编译boost 1.55
查看>>
IIS7如何显示详细错误信息
查看>>
Tar打包、压缩与解压缩到指定目录的方法
查看>>