泛型程序设计
来源:互联网 发布:网络英语哪里学比较好 编辑:程序博客网 时间:2024/05/29 07:21
类型参数提高了可读性、安全性
泛型类的定义:
public class Pair<T> { private T first; private T second; public Pair() { first = null; second = null; } public Pair(T first, T second) { this.first = first; this.second = second; } public T getFirst() { return first; } public T getSecond() { return second; } public void setFirst(T newValue) { first = newValue; } public void setSecond(T newValue) { second = newValue; }}
泛型方法定义:
public static <T extends Comparable> Pair<T> minmax(T[] a)
虚拟机没有泛型类型对象。
定义泛型类型,都自动提供了一个相应的原始类型(第一个限定类型或Object类型)
翻译泛型表达式(编译器插入强制类型转换)
类型擦除与多态可能发生冲突,(编译器生成一个桥方法,以保持多态)
约束与限制:(类型擦除引起)
不能用基本类型实例化类型参数,没有Pairm<double>,只有Pair<Double>
运行时类型查询只适应原始类型
Pair<String> stringPair=...
Pair<Employee> employeePair=...if(stringPair.getClass() == employeePair.gatClass()) //PairClass 相同
不能创建参数化类型数组
Pair <String>[] table = new Pair <String>[10]; //Error
不能实例化类型变量
new T() new T[] T.Class 都错误
可以使用:
public <T> Pair<T> make(Class<T> c1){
c1.newInstance();
} // Class类本身是泛型
泛型类的静态上下文中类型变量无效
不能抛出或捕获泛型类的实例
public class Problem<T> extends Exception{} // Error
可以
public static <T extends Trowable> void doWork(T t) throws T{}// 合法
通配符的超类型限定 ? super Manager
0 0
- 泛型程序设计
- 泛型程序设计
- 12 泛型程序设计
- 泛型程序设计
- 泛型程序设计
- 泛型程序设计
- java泛型程序设计
- 泛型程序设计
- stl泛型程序设计
- 泛型程序设计
- 泛型程序设计
- 泛型程序设计
- Java泛型程序设计
- 泛型程序设计
- 泛型程序设计
- 牛刀小试 - Java泛型程序设计
- Java的泛型程序设计
- java基础----泛型程序设计
- androidstuido使用问题总结一
- UI_触摸事件
- 99.求出平均值
- Android开发listview列表加载服务器数据 等待效果
- curl 返回false
- 泛型程序设计
- 第29题:判断一个序列是否是另一个push序列的pop序列
- 51单片机中断学习
- c++中const的各种用法
- 项目中phonegap/cordova 项目中遇到的问题解决方案(因64位被苹果商店拒绝以及IOS8上not working)
- Error -27728: Step download timeout (120 seconds) has expired when downloading non-resource(s)
- IOS自动化测试之UIAutomation Test学习——first step:Instrument
- 常见邮件服务器(接收服务器和发送邮件服务器)地址
- 'dict' object has no attribute 'resolve'