- 浏览: 3462534 次
- 性别:
- 来自: 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 1937public static void applyV ... -
42 自定义泛型类的应用
2011-12-23 09:50 1636l 如果类的实例对 ... -
40 自定义泛型方法及其应用41 自定义泛型方法的练习与类型推断总结
2011-12-23 09:49 164240 自定义泛型方法及其应用 l <!--[e ... -
36 入门泛型的基本应用37 泛型的内部原理及更深应用
2011-12-23 09:49 118436 入门泛型的基本应用 <!--[if !su ... -
33了解和入门注解的应用34 注解的定义与反射调用35为注解增加各种属性
2011-12-23 09:49 163633 了解和入门注解 ... -
32 使用BeanUtils工具包操作JavaBean
2011-12-22 10:02 1536Beanutils工具包: l 演示用eclipse ... -
30-31内省访问JavaBean属性的两种方法
2011-12-22 10:02 224230 对JavaBean的简单内省操作 //pt ... -
29 由内省引出JavaBean的讲解
2011-12-22 10:02 1397IntroSpector内省—> ... -
28 用类加载器的方式管理资源和配置文件
2011-12-22 10:01 1525/*getRealPath();//金山词霸/内部 ... -
27框架的概念及用反射技术开发框架的原理
2011-12-21 09:38 1141反射的作用à实现框架功能 *框架与框架要解决的 ... -
解释equals(),hashcode()和==
2011-12-21 09:38 1609简单的结论:当对象类没有不符合规范的override e ... -
26 ArrayList_HashSet的比较及Hashcode分析
2011-12-21 09:38 1651只有类的实例对象要被采用哈希算法进行存储和检索时,这个类 ... -
23对接收数组参数的成员方法进行反射24 数组与Object的关系及其反射类型25 数组的反射应用
2011-12-21 09:37 128423对接收数组参数的成员方法进行反射 packa ... -
18 理解反射的概念19构造方法的反射应用20成员变量的反射 21成员变量反射的综合案例22成员方法的反射
2011-12-21 09:37 152118 理解反射的概念 反射 一、反射就是Java类中 ... -
17 透彻分析反射的基础_Class类
2011-12-20 11:16 1405Java类用于描述一类事物的共性,该类事物有什么属性,没 ... -
12-16 jdk5枚举
2011-12-20 10:55 1294模拟枚举,其实枚举编译后就是如此: pac ... -
11 jdk5基本数据类型的自动拆箱与装箱
2011-12-20 10:36 1625package cn.zyj11.revie ... -
09jdk5可变参数与OverLoad;10java5的增加for循环
2011-12-20 10:34 1375package cn.zyj0910.review ... -
08 jdk5的静态导入
2011-12-20 10:31 1227import语句可以导入一个类或某个包中的所有类 im ...
相关推荐
实例将解释泛型类、泛型方法以及通配符的使用。 通过这些实例,学习者不仅可以了解Java的基本概念,还能加深对高级特性的理解。实践中遇到问题并解决问题,是提高编程技能的有效方式。建议在学习过程中,逐步分析每...
8. **泛型**:Java泛型提高了代码的类型安全,源码中会展示如何使用泛型类、泛型接口、泛型方法,以及通配符的使用。 9. **注解(Annotation)**:注解在Java中用于提供元数据,源码中可能包含自定义注解及其处理器...
第七章可能讲解了泛型和集合的高级用法,如泛型类、泛型方法、泛型通配符等。泛型提高了代码的类型安全性和可读性,使得集合可以更有效地处理不同类型的元素。 第八章可能涉及了Java的高级特性,如反射、注解、枚举...
- **泛型的高级话题**:深入探讨泛型通配符、类型边界等高级特性,以及它们在实际编程中的作用。 - **异常处理的最佳实践**:给出异常处理的最佳实践建议,例如避免过度使用异常作为流程控制手段等。 - **集合框架的...
11. **泛型**:泛型提高了代码的类型安全,源代码中可能使用泛型类、泛型方法,以及通配符等特性。 12. **Java 8及以后的新特性**:例如Lambda表达式、Stream API、Optional类等,这些新特性让Java更加简洁和高效。...
- 综合应用案例可能涉及使用泛型集合来处理不同类型的数据。 ##### 5. 自定义泛型方法及其应用 - 可以自定义泛型方法来处理泛型参数。 ##### 6. 自定义泛型类的应用 - 泛型类允许创建类型安全的对象,可以自定义...
13.5.4 Pattern与Matcher类的综合应用 264 13.6 String类中正则式的应用 266 13.6.1 模式匹配检查 266 13.6.2 利用正则式进行查找替换 267 13.6.3 利用正则式对字符串进行分析 268 13.7 小结 269 第14...
《JAVA 2应用编程150例》是一本专注于Java编程实践的教程,它涵盖了大量实际编程中的案例,旨在帮助读者深入理解Java语言的核心概念和常用API,提升编程能力。在学习Java 2(也称为Java SE)的过程中,了解和实践...
学生应学习泛型类、泛型接口、通配符和泛型方法。 10. **Java SE和Java EE**:Java Standard Edition(SE)是Java的基础平台,而Enterprise Edition(EE)则扩展了对服务器端应用的支持,包括Servlet、JSP、EJB等。...
这个课件很可能还会包含一些实际项目或案例,让学习者有机会将所学知识应用于实践中。例如,创建简单的命令行应用程序,实现一个简单的文件管理系统,或者构建一个基于TCP/IP的聊天程序。通过实践,学习者能够更好地...
本章可能讲解泛型的基本概念、通配符、类型擦除等。 10. **注解(Annotation)**:注解为编译器和运行时提供元数据,可以用于代码分析、代码生成、运行时验证等。第18章可能包含注解的定义、使用和自定义注解的创建...
10. **泛型**:提高代码的类型安全性和重用性,理解泛型类、泛型方法和通配符。 11. **IO/NIO**:从传统的 Blocking I/O 转向非阻塞的 New IO,了解NIO和AIO(异步IO)模型。 12. **JVM**:理解Java虚拟机的工作原理...
书中将详细阐述泛型的基本概念、通配符、类型擦除和泛型方法。 7. **枚举与注解**:枚举类型提供了常量的强类型表示,而注解则是一种元数据,可以用来提供编译时或运行时的信息。这两者都是Java中重要的特性,对...
4. **集合框架**:详述了ArrayList、LinkedList、HashSet、HashMap等集合类的使用,以及泛型和迭代器的概念,使读者能够有效地存储和管理数据。 5. **文件与IO流**:探讨了Java的输入/输出系统,包括文件操作、字符...
理解泛型的声明、限制和通配符,能写出更健壮的代码。 9. **网络编程**:Java提供了Socket和ServerSocket类进行网络通信,理解TCP和UDP协议,以及如何构建基于HTTP的Web服务,是进行网络编程的基础。 10. **数据库...
了解泛型的使用,如泛型类、泛型方法和通配符,能编写出更健壮的代码。 10. **反射API**:Java的反射API允许在运行时检查类、接口、字段和方法的信息,甚至动态调用方法和创建对象。反射是许多高级功能,如插件系统...
这部分可能会讲解泛型的基本用法,通配符,以及泛型与集合的结合使用。 5. **IO流**:Java的IO流系统是处理输入输出的关键,这部分可能包含字符流与字节流的区别,缓冲流的使用,以及文件操作,管道流,对象序列化...
此外,还介绍了泛型类、泛型方法以及通配符等高级特性。 3. **并发编程**:这一部分深入探讨了Java中的并发编程机制,包括线程的基本概念、线程同步的方法、并发工具类的使用等。通过实例讲解了如何设计高效、稳定...
4. **泛型**:86-90会介绍泛型的概念,类型参数,通配符,以及泛型类和泛型方法。 5. **IO流**:91-95可能涵盖文件读写,字节流和字符流,缓冲流,对象序列化,以及文件复制。 6. **网络编程**:96-98会讲解Socket...