- 浏览: 3436687 次
- 性别:
- 来自: China
文章分类
- 全部博客 (536)
- ajax (1)
- Algorithm (14)
- Android (40)
- CSS/HTML... (2)
- defy (3)
- DesignPattern (2)
- dorado (0)
- Drools (6)
- English/日本語 (7)
- Flex (2)
- Framework (0)
- Google (3)
- hibernate (13)
- homework (3)
- HTML5 (0)
- IDE (29)
- java (45)
- javaee (7)
- Javascript (14)
- java组件 (5)
- jQuery (4)
- jsp (8)
- jsf (2)
- Linux (2)
- lucene (0)
- mysql (6)
- news (3)
- Oracle (8)
- other (4)
- PHP (5)
- Python (0)
- Software Engineering (3)
- spring (7)
- struts1.x (14)
- struts2.x (14)
- strolling in cloud (1)
- subject:javaEnhance (20)
- Tomcat (7)
- validator (3)
- 学习·方法·心得 (8)
- .NET (2)
- vba (6)
- groovy (5)
- grails (2)
- SWT (0)
- big data (1)
- perl (1)
- objective-c (50)
- product (1)
- mac (7)
- ios (188)
- ios-phone (2)
- ios-system (15)
- ios-network (5)
- ios-file (4)
- ios-db (1)
- ios-media (3)
- ios-ui (27)
- ios-openSource (6)
- ios-animation (5)
- ios-drawing (7)
- c (2)
- ios-app (2)
- ios-course (15)
- ios-runtime (14)
- ios-code (8)
- ios-thread (8)
- ios-LBS (2)
- ios-issue (1)
- ios-design (2)
- Jailbreak (2)
- cocos2d (0)
- swift (16)
- ios-framework (4)
- apple watch (4)
- ios-web (1)
- react native (3)
- TVOS (1)
- OpenGL (1)
最新评论
-
xiaobinggg:
...
Session机制详解 -
菜鸟学生会:
Drools规则工作流引擎开发教程网盘地址:http://pa ...
Drools入门-----------环境搭建,分析Helloworld -
wangyudong:
不是很好用,不支持自动化测试RESTful API,也不支持自 ...
Simple REST Client POST使用方法 -
Paul0523:
很棒的一篇文章,感谢楼主分享
Session机制详解 -
啸笑天:
获取原型对象的三种方法<script>functi ...
复习JavaScript面向对象技术
38 泛型的通配符扩展应用
泛型中的?通配符:
l问题:
Ø 定义一个方法,该方法用于打印出任意参数化类型的集合中的所有数据,该方法如何定义呢?
l错误方式:
public static void printCollection(Collection<Object> cols) {
for(Object obj:cols) {
System.out.println(obj);
}
/* cols.add("string");//没错
cols = new HashSet<Date>();//会报告错误!*/
}
l正确方式:
public static void printCollection(Collection<?> cols) {
for(Object obj:cols) {
System.out.println(obj);
}
//cols.add("string");//错误,因为它不知自己未来匹配就一定是String
cols.size();//没错,此方法与类型参数没有关系
cols = new HashSet<Date>();//没错,使用?通配符可以引用其他各种参数化的类型,
}
l总结:
Ø 使用?通配符可以引用其他各种参数化的类型,?通配符定义的变量主要用作引用,可以调用与参数化无关的方法,不能调用与参数化有关的方法。
Ps:
/*Cols<Object> 中的Object只是说明Cols<Object> 实例对象中的方法接受的参数是Object
Cols<Object> 是一种具体类型,new HashSet<Date>也是一种具体类型,两者没有兼容性问题。
*/
Collection<?> a可以与任意参数化的类型匹配,但到底匹配的是什么类型,只有以后才知道,所以,
a=new ArrayList<Integer>和a=new ArrayList<String>都可以, 但a.add(new Date())或a.add(“abc”)都不行,
泛型中的?通配符的扩展:
l 限定通配符的上边界:
Ø 正确:Vector<? extends Number> x = new Vector<Integer>();
Ø 错误:Vector<? extends Number> x = new Vector<String>();
l 限定通配符的下边界:
Ø 正确:Vector<? super Integer> x = new Vector<Number>();
Ø 错误:Vector<? super Integer> x = new Vector<Byte>();
l 提示:
Ø 限定通配符总是包括自己。
Ø 只能用作引用,不能用它去给其他变量赋值
Vector<? extends Number> y = new Vector<Integer>();
Vector<Number> x = y;
上面的代码错误,原理与Vector<Object > x11 = new Vector<String>();相似,
只能通过强制类型转换方式来赋值。
39 泛型集合的综合应用案例
l 能写出下面的代码即代表掌握了Java的泛型集合类:
HashMap<String,Integer> hm = new HashMap<String,Integer>();
hm.put("zxx",19);
hm.put("lis",18);
Set<Map.Entry<String,Integer>> mes= hm.entrySet();
for(Map.Entry<String,Integer> me : mes) {
System.out.println(me.getKey() + ":" + me.getValue());
}
l 对在jsp页面中也经常要对Set或Map集合进行迭代:
<c:forEach items=“${map}” var=“entry”>
${entry.key}:${entry.value}
</c:forEach>
代码:
HashMap<String, Integer> maps=new HashMap<String, Integer>(); maps.put("a", 1); maps.put("b", 1); maps.put("c", 1); Set<Map.Entry<String, Integer>> entrySet=maps.entrySet(); for (Map.Entry<String, Integer> entry : entrySet) { System.out.println(entry.getKey()+":"+entry.getValue()); }
发表评论
-
43 通过反射获得泛型的实际类型参数
2011-12-24 00:01 1885public static void applyV ... -
42 自定义泛型类的应用
2011-12-23 09:50 1590l 如果类的实例对 ... -
40 自定义泛型方法及其应用41 自定义泛型方法的练习与类型推断总结
2011-12-23 09:49 160140 自定义泛型方法及其应用 l <!--[e ... -
36 入门泛型的基本应用37 泛型的内部原理及更深应用
2011-12-23 09:49 115036 入门泛型的基本应用 <!--[if !su ... -
33了解和入门注解的应用34 注解的定义与反射调用35为注解增加各种属性
2011-12-23 09:49 160333 了解和入门注解 ... -
32 使用BeanUtils工具包操作JavaBean
2011-12-22 10:02 1497Beanutils工具包: l 演示用eclipse ... -
30-31内省访问JavaBean属性的两种方法
2011-12-22 10:02 221730 对JavaBean的简单内省操作 //pt ... -
29 由内省引出JavaBean的讲解
2011-12-22 10:02 1373IntroSpector内省—> ... -
28 用类加载器的方式管理资源和配置文件
2011-12-22 10:01 1495/*getRealPath();//金山词霸/内部 ... -
27框架的概念及用反射技术开发框架的原理
2011-12-21 09:38 1103反射的作用à实现框架功能 *框架与框架要解决的 ... -
解释equals(),hashcode()和==
2011-12-21 09:38 1574简单的结论:当对象类没有不符合规范的override e ... -
26 ArrayList_HashSet的比较及Hashcode分析
2011-12-21 09:38 1614只有类的实例对象要被采用哈希算法进行存储和检索时,这个类 ... -
23对接收数组参数的成员方法进行反射24 数组与Object的关系及其反射类型25 数组的反射应用
2011-12-21 09:37 125623对接收数组参数的成员方法进行反射 packa ... -
18 理解反射的概念19构造方法的反射应用20成员变量的反射 21成员变量反射的综合案例22成员方法的反射
2011-12-21 09:37 148518 理解反射的概念 反射 一、反射就是Java类中 ... -
17 透彻分析反射的基础_Class类
2011-12-20 11:16 1374Java类用于描述一类事物的共性,该类事物有什么属性,没 ... -
12-16 jdk5枚举
2011-12-20 10:55 1256模拟枚举,其实枚举编译后就是如此: pac ... -
11 jdk5基本数据类型的自动拆箱与装箱
2011-12-20 10:36 1588package cn.zyj11.revie ... -
09jdk5可变参数与OverLoad;10java5的增加for循环
2011-12-20 10:34 1344package cn.zyj0910.review ... -
08 jdk5的静态导入
2011-12-20 10:31 1190import语句可以导入一个类或某个包中的所有类 im ...
相关推荐
泛型集合解释的非常好泛型集合泛型集合泛型集合解释的非常好泛型集合泛型集合泛型集合解释的非常好泛型集合泛型集合泛型集合解释的非常好泛型集合泛型集合
* 一个参数通配符的实例 * 说明:对一个包含了数值元素的集合进行汇总运算。在这种情况下,用户并不关心 * 集合中的每一个对象是什么类型,只要它是数值型即可,而且,用户也希望集合中可以 * 存放不同类型的数值...
java基础-泛型通配符
NULL 博文链接:https://mydownload.iteye.com/blog/1330570
一个泛型集合的应用,主要讲的dictionary,obj>的应用
sqlsugar 泛型分页扩展
泛型和泛型集合类用法泛型和泛型集合类用法泛型和泛型集合类用法泛型和泛型集合类用法泛型和泛型集合类用法
Java Generics and Collections 英文版,详细描述java 泛型技术
主要介绍了Java中泛型通配符的使用方法,结合实例形式分析了java中泛型通配符的功能、语法及在泛型类创建泛型对象中的使用方法,需要的朋友可以参考下
在.NET FCL为我们提供了很多...结论:如果在C#2.0版本以上,尽量使用泛型集合类,而不使用非泛型集合类。因为,1. 泛型编程是从c#2.0开始才被.net支持的。2.泛型集合在性能和类型安全方面优于非泛型集 合。 。。。。
泛型:就是在定义类,接口时指定类型形参, 这个类型形参将在声明变量,创建对象时确定(即实际传入的类型参数,也称为类型实参)
Python中泛型函数应用案例.pdf
泛型集合与数组应用老师找学生 泛型集合 数组应用 老师找学生 C# 北大青鸟高老师
此实例代码大部分从网上整理而来,因为近期感觉泛型、集合等在ASP.NET web项目中开发还是比较重要的,对提高系统情能很有帮助。
C#中的集合与泛型应用实例,针对集合与泛型进行详细讲解,代码简单易懂。
通过7个实例详细介绍泛型的使用,包括普通泛型、通配符、泛型方法、泛型接口、受限泛型、泛型的转型、泛型数组。相信看完这几个泛型的例子就会使用泛型了。注意,这里并不介绍泛型的具体语法,只介绍泛型的使用。
java泛型集合 java集合 集合 java Collection 排序 集合排序
网上很多讲泛型原理的文章, 很少有提到我们什么时候使用泛型有优势, 我就泛型类和方法搞了两个实例,算是探索下泛型使用的冰山一角吧,在我博客里面有配套的文章,可以配套看.
Java试题-3:反射和泛型的综合应用 Java反射 泛型都是比较高级的应用技术
这是小编自己学习的心得,想通过这个平台对大家共享,希望大家前来评价一下,我及时改正,通配符这个是在泛型中使用的一个可以帮助大家更加方便简洁的去利用代码,它是其他泛型的一个总父类!