网站大量收购独家精品文档,联系QQ:2885784924

新特性介绍.doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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

文档评论(0)

153****9595 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档