Java泛型相关问题
来源:互联网 发布:网络剧和电视剧的区别 编辑:程序博客网 时间:2024/05/18 03:13
话说泛型应该是C++里面先出来的玩意。但是JAVA 5开始也有了。那么什么叫泛型呢?
我的理解:泛型就是将类型参数化。也就是我们传参数时不再限于传一个特定类型的值了。举例说明:一下代码我们经常看到吧?
List<T> list=new ArrayList<T>():
其中T就决定了类型,但是Java里面T不允许是基础类型(int、long、double等,如果需要使用这些基础类型,可以用他们对应的包装类);
对于这个的使用我们都不陌生,只要是学过Java的基本都应该用过。但是很多人都会忽略一个比较基础的问题,我们怎么定义一个自己的泛型类呢?
例:
public class Generic<V>{ T t; Generic(T t){ this.t=t; }}
这个也比较简单,但是我们经常会通过各种途径知道这样那样的警告:
1、不能有类似于T t=new T(),这样的实例化T的语句
2、T不能是静态变量
3、不适当的重载会出现问题
这个是神马原因呢??
其实当我们尝试去了解Java泛型实现的机制就一目了然了。很过官方、非官方正式文档都说Java的泛型使用的是叫擦拭的原理:当Java代码被编译时,全部泛型类型的信息都会被擦拭。实际上的意思就是说:构造延迟。
因为可以擦除功能,所以 List<Integer>
和 List<Long>
是同一个类,编译器在编译 List<T>
时只生成一个类。因此,在编译 List<T>
类时,编译器不知道 T所表示的类型,所以它就不能像知道类所表示的具体类型那样处理 List<T>
类定义中的类型参数(List<T>
中的T
)。
因为运行时不能区分 List<String>
和 List<Integer>
(运行时都是 List
),所以上面几个警告当然就很明显是应当注意的。
- Java泛型相关问题
- java泛型实现及类型擦除相关问题
- Java 泛型相关
- Java相关编码问题
- Java程序相关问题
- java applet 问题相关
- Java反射相关问题
- Java相关问题
- java相关问题
- java maven 相关问题
- java 路径相关问题
- java相关问题回答
- java 多线程相关问题
- Java interrupt相关问题
- java相关问题整理
- java相关问题总结
- Java异常 相关问题
- Java多线程相关问题
- WCF学习笔记(八)服务模式下的简单事务实例和非事务实例对比
- 存储过程
- 经典笑话(4)
- 问题这个概念
- 随想
- Java泛型相关问题
- MASM汇编语言笔记(三)数据传送和算术运算
- linux+shell+脚本+过滤NetScreen防火墙日志
- socket通信数据量大小限制
- Oracle 11gR2 使用 RMAN duplicate from active database 复制数据库
- 经典笑话(5)
- Nd2d-编辑后效果
- Oracle 11gR2 使用 RMAN duplicate from active database 复制数据库
- ORACLE直接路径操作