Java 泛型小结
来源:互联网 发布:淘宝网 话费充值 编辑:程序博客网 时间:2024/05/17 01:19
转:http://blog.sina.com.cn/s/blog_69a4df530100p8w1.html
经过将近两个小时的学习与思考,对java泛型有了新认识,之前一直都是随便用用,而没有深入学习、思考,趁着现在有空闲时间,重新再学一下泛型,才明白其较深层的意思。
学习泛型时,最大困惑的就是里面的通配符使用。现在好好总结一翻:首先从网上的仁兄那,解析下,什么是泛型,为什么要使用泛型:
泛型(Generic type 或者 generics)是对 Java 语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类。可以把类型参数看作是使用参数化类型时指定的类型的一个占位符,就像方法的形式参数是运行时传递的值的占位符一样。
接下来,就是实践了,话不在多,直接看代码:
package com.gen.test;
class A<K, V> {
}
public class TestGen1 {
}
这里给我们的启动时,泛型有点像C++里的模块。
//////////////////////////////////////////demo two//////////////////////////////////////////
package com.gen.test;
class B<K extends String, V extends Integer> {
}
public class TestGen2 {
}
会发现,在类的声明处,用了一个叫extends的关键字,有必要说一下:
Extends: 上界用extends关键字声明,表示参数化的类型可能是所指定的类型,或者是此类型的子类。
Super: 下界用super进行声明,表示参数化的类型可能是所指定的类型,或者是此类型的父类型,直至Object。
下面,利用作图法,使我们能看得更清楚:
假如代码如下:<? Extends Date>,<? Super Date>
作图如下:
看了图之后,就不难理解了。
如果对此想深入研究的话,请参考下面的一位仁兄写的文章:
http://fyting.javaeye.com/blog/122732
最后我想说一下,“?”这个问题的用法:
先看代码:
class C<K ,V extends Number> {
class D<J extends C<String,? super Number>,K>{
}
C<String,? super Number>:?处,只能传入以Number为下限的东西,即Number的父类而class C<K ,Vextends Number>又限定了,只能传以Number为上限的东西,即Number的子类,最终限定了,我们只能传Number类
public class TestGen3 {
}
个人觉得,学习泛型是一个需要仔细思考的一个过程,有了这些基础之后,相信对看一些开源框架有帮助,毕竟写框架的作者都是些高手。
今天学习了java annotation与泛型,巩固一下自己的基础。
- java 泛型小结
- Java 泛型小结
- java泛型小结
- java泛型小结
- Java 泛型小结
- java泛型小结
- Java泛型小结
- Java泛型小结
- java泛型小结
- Java泛型使用小结
- java泛型小结1
- Java泛型使用小结
- JAVA基础—泛型小结
- Thinking in Java---泛型小结
- Java返回类型泛型的用法小结
- java中关于泛型擦除的小结
- 奋斗黑马程序员----Java之泛型小结
- Java返回类型泛型的用法小结
- reids客户端 redis-cli用法
- 压缩图片
- ORACLE 数据库名、实例名、ORACLE_SID的区别
- hdu 1102 uva 10397(最小生成树prim)
- HDU 4198 Quick out of the Harbour(优先队列 + bfs)
- Java 泛型小结
- 修改MYSQL提示符
- MongoDB学习 (五):查询操作符(Query Operators).1st
- Object.clone()方法
- 浏览器不同语言切换不同页面
- 怎么关闭指定端口 3306
- 【转载】Java之美[从菜鸟到高手演变]之设计模式二
- MySQL数据库表结构设计优化技巧总结
- HTML 5 的自定义 data-* 属性和jquery的data()方法的使用