黑马程序员--泛型
来源:互联网 发布:项羽举鼎是真的吗 知乎 编辑:程序博客网 时间:2024/06/17 20:45
---------- android培训、java培训、期待与您交流! ----------
泛型也是jdk1.5的新特性,它是模仿C++的泛型产生的,它的出现实现了一份代码可以被多种不同类型的对象重用,并且是代码简单,安全.
泛型只在编译时期有效,通过泛型,编译器可以过滤一些不符合泛型的类型,而jvm在执行程序的时候,会去掉泛型,
泛型好处
泛型的主要好处就是让编译器保留参数的类型信息,执行类型检查,执行类型转换操作,编译器保证了这些类型转换的绝对无误。
/******* 不使用泛型类型 *******/ List list1 = new ArrayList(); list1.add(0); /编译器不检查值 String str1 = (String)list1.get(0); //需手动强制转换,如转换类型与原数据类型不一致将抛出ClassCastException异常 /******* 使用泛型类型 *******/ List<String> list2 = new ArrayList<String>(); list2.add("value");//[类型安全的写入数据] 编译器检查该值,该值必须是String类型才能通过编译 String str2 = list2.get(0); //[类型安全的读取数据] 不需要手动转换
泛型中的? 通配符(可以是任意类型)
1. 使用?通配符可以引用其他各种参数化的类型,?通配符定义的变量主要用作引用,可以调用
与参数化无关的方法,不能调用与参数化有关的方法
2.限定通配符的上边界 extends
限定通配符的下边界 extends
限定通配符总是包含自己 (包含自己和自己的子类)
注意:在对泛型类型进行参数化时,类型参数的实例必须是引用类型,不能是基本类型。
当一个变量被声明为泛型时,只能被实例变量和方法调用(还有内嵌类型),而不能被静态变量和静态方法调用。应为静态成员是被所有参数化的类所共享的,所以静态成员不应该有类级别的类型参数。
泛型类
什么时候定义泛型类?
当类中要操作的引用数据类型不确定的时候
早期定义Object来完成扩展
现在定义泛型来完成扩展
代码实现入下:
class Utils<QQ>{private QQ q;public void setObject(QQ q){this.q = q;}public QQ getObject(){return q;}}class GenericDemo2 {public static void main(String[] args) {Utils<Worker> u = new Utils<Worker>();u.setObject(new Student());Worker w = u.getObject();/*Tool t = new Tool();t.setObject(new Student());Worker w = (Worker)t.getObject();*/}}
0 0
- 《黑马程序员》泛型
- 黑马程序员—泛型
- <黑马程序员>泛型
- 黑马程序员-Java泛型
- 黑马程序员_泛型
- 黑马程序员 泛型
- 黑马程序员--泛型
- 黑马程序员-java-泛型
- 黑马程序员_泛型
- 黑马程序员_Java泛型
- 黑马程序员_泛型
- 黑马程序员_泛型
- 黑马程序员-泛型Generic
- 黑马程序员:泛型
- 黑马程序员_泛型
- 黑马程序员--泛型
- 黑马程序员---高新技术 泛型
- 黑马程序员:泛型
- Greetings
- git提取出两个版本之间的差异文件并打包
- 小议Linux中的僵死进程
- A*算法/博弈树
- 黑马程序员_JAVA编程基础知识
- 黑马程序员--泛型
- Oracle 字符集的查看和修改
- 没有为扩展名“.html”注册的生成提供程序
- JPBM4.4基础及数据库说明
- lua中table活用
- POJ 1265 Area
- 在PHP中利用wsdl创建标准webservice
- Myeclipse10激活
- [the summarization of algorithm]Heap and Heapsort