欢迎来到天天文库
浏览记录
ID:38364407
大小:64.00 KB
页数:15页
时间:2019-06-11
《java1.5新特性》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、jdk1.5新特性说明“JDK1.5”的一个重要主题就是通过新增一些特性来简化开发,这些特性包括泛型,for-each 循环,自动装包/拆包,枚举,可变参数, 静态导入 。使用这些特性有助于我们编写更加清晰,精悍,安全的代码。一.首先简单介绍一下各种特性及其使用1.泛型(Generic)C++通过模板技术可以指定集合的元素类型,而Java在1.5之前一直没有相对应的功能。一个集合可以放任何类型的对象,相应地从集合里面拿对象的时候我们也不得不对他们进行强制得类型转换。猛虎引入了泛型,它允许指定集合里元素的类型,这样你可以得到强类型在编译时刻进行类型检查的好处。“
2、JDK1.5”的一个重要主题就是通过新增一些特性来简化开发,这些特性包括泛型,for-each 循环,自动装包/拆包,枚举,可变参数, 静态导入 。使用这些特性有助于我们编写更加清晰,精悍,安全的代码。一.首先简单介绍一下各种特性及其使用1.泛型(Generic)C++通过模板技术可以指定集合的元素类型,而Java在1.5之前一直没有相对应的功能。一个集合可以放任何类型的对象,相应地从集合里面拿对象的时候我们也不得不对他们进行强制得类型转换。猛虎引入了泛型,它允许指定集合里元素的类型,这样你可以得到强类型在编译时刻进行类型检查的好处。1Collection
3、tring>c=newArrayList();2c.add(newDate()); 编译器会给出一个错误:add(java.lang.String)injava.util.Collectioncannotbeappliedto(java.util.Date)2.For-Each循环For-Each循环得加入简化了集合的遍历。假设我们要遍历一个集合对其中的元素进行一些处理。典型的代码为:1voidprocessAll(Collectionc){2for(Iteratori=c.iterator();i.hasNext();)
4、{3MyClassmyObject=(MyClass)i.next();4myObject.process();5}6} 使用For-Each循环,我们可以把代码改写成:1voidprocessAll(Collectionc){2for(MyClassmyObject:c)3myObject.process();4} 这段代码要比上面清晰许多,并且避免了强制类型转换。3.自动装包/拆包(Autoboxing/unboxing)自动装包/拆包大大方便了基本类型数据和它们包装类地使用。自动装包:基本类型自动转为包装类.(int>>Intege
5、r)自动拆包:包装类自动转为基本类型.(Integer>>int) 在JDK1.5之前,我们总是对集合不能存放基本类型而耿耿于怀,现在自动转换机制解决了我们的问题。1inta=3;2Collectionc=newArrayList();3c.add(a);//自动转换成Integer.4Integerb=newInteger(2);5c.add(b+2); 这里Integer先自动转换为int进行加法运算,然后int再次转换为Integer.4.枚举(Enums)JDK1.5加入了一个全新类型的“类”-枚举类型。为此JDK1.5引入了一个新关键字enmu.
6、 我们可以这样来定义一个枚举类型。1publicenumColor2{3Red,4White,5Blue6} 然后可以这样来使用ColormyColor=Color.Red. 枚举类型还提供了两个有用的静态方法values()和valueOf(). 我们可以很方便地使用它们,例如1for(Colorc:Color.values())2System.out.println(c);5.可变参数(Varargs) 可变参数使程序员可以声明一个接受可变数目参数的方法。注意,可变参数必须是函数声明中的最后一个参数。假设我们要写一个简单的方法打印一些对象,util.
7、write(obj1);util.write(obj1,obj2);util.write(obj1,obj2,obj3);… 在JDK1.5之前,我们可以用重载来实现,但是这样就需要写很多的重载函数,显得不是很有效。如果使用可变参数的话我们只需要一个函数就行了1publicvoidwrite(Object...objs){2for(Objectobj:objs)3System.out.println(obj);4} 在引入可变参数以后,Java的反射包也更加方便使用了。对于c.getMethod("test",newObject[0]).invoke(c.
8、newInstance(),newOb
此文档下载收益归作者所有