- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
新特性介绍
Java 新特性介绍
Generic Types
Autoboxing
Enhanced for loop
Enumerated types
Static Import
Generic Types
C++ 中的泛型
先前撰写 C++ 时,还没有泛型(Generic types)的字眼出现,最多是使用 template 来达成对不同型别的支持。像是:
template class Type class Stack { Type st[MAX]; int t;
public: void push(Type v); // other code
}; Stack s; // declare
不过在 C++ STL (Standard Template Library) 出现,各个 C++ 编译器相继支持后,泛型一词才在信息界中广为流传。STL 提供了字符串、容器、算法等众多功能,使得 C++ 增色不少,其中泛型是相当重要的概念。无论是各种类别,都可以放在容器之中,并且使用算法函式库来处理。例如:
vectorstring *dirs = new vectorstring; // data
list addSomeData(dirs); sort(dirs-begin(), dirs-end()); // sort list
typedef vectorstring::iterator iter; typedef string::size_type
size_type; for (iter it = dirs-begin(); it != dirs-end(); it++) {
size_type dpos = (*it).find_last_of(.); // find . string fileName =
(*it).replace(dpos + 1, 3, txt); //replace coutRead
(*it) and create fileName; }
C++ 有泛型的出现,很大一个原因是为了要处理各种不同的型别,包括了 STL 中新增和使用者自行定义的部份。和 C++ 不同的是,Java 一开始并没有这样的设计,因为 Java 所有的对象都有共同的祖先:java.lang.Object,所以 Java 中的函式若要处理多型别时,只需适当地定义参数和(或)传回值为 Object 即可,这正是多型的彻底应用之一。反之 C++ 中的类别没有这关的关系,因此泛型在 C++ 中就显得特别重要。
不过在这边有些缺点。因为 C++ 的泛型是使用 template 来达成的,而 template 会在遇到不同型别时产生相对应的副本。例如 Type add(Type t, Type s) 这项函式定义会在 add(4, 1) 时出现 int add(int, int) 的程序代码,并在 add(1.1, 2.2) 时出现 float add(float, float) 的程序代码,也就是整个整式因为这个关系,而变得愈来愈肥大。
Java 中的泛型
Java 1.5 中已经支持泛型了。目前主要在 java.util 中的类别有比较多的例子,另外还有在 java.lang.Comparable, java.lang.Class, java.lang.Enum 及其相关类别。底下是用 List 和 Vector 来测试泛型:
import java.util.*; public class GenericTest { public static void
main(String[] args) { int size = 6; ListInteger list = new
VectorInteger(); for (int i = 0; i size; i++) { list.add(new
Integer(size - i)); } for (int i = 0; i size; i++) {
System.out.print(list.get(i).intValue() + -); } } } 执行结果: 6-5-4-3-2-1-
泛型在此所带来的好处是只要在宣告时我们指定好类别,那么接下来后面的程序中它会自动帮我们转型, 并且也会检查后续加入容器中的对象是否可转型成我们指定的类别。上例中,如果增加一行 list.add(test); ,那么在编译时就会出现错误,会说 cannot find symbol : method add(java.lang.String) 。这使得原本放在执行阶段才会检查出来的问题,提升到了编译时期。降低了 bug 出现的机会,也让程序设计师在除错上方便许多。另外 Ja
您可能关注的文档
最近下载
- 石油化工产学研合作与创新体系建设进展.pptx
- 心理课:生涯决策力提升-《生涯决策力提升》.pptx
- (完整)婚介登记表.doc
- 浙江省宁波市区县社区街道乡镇村名称统计.pdf
- 法雷奥供应商手册supplierqualitymanual2104rev09资料.pdf
- 2023年汕头市潮阳区卫健系统招聘医学类专业技术人员笔试真题.docx VIP
- 2024年义务教育化学课程标准2022年版(多选题)考试专项题库及答案.docx
- 海阳市各级文物保护单位一览表(2024版).docx VIP
- 2025届高考英语模拟卷(新高考Ⅰ卷)两套(word版有答案).docx
- 2025年建设美丽乡村示范村实施方案.pdf VIP
文档评论(0)