chapter09 - JDK 50新特性(泛型、可变参数、静态导入).ppt_第1页
chapter09 - JDK 50新特性(泛型、可变参数、静态导入).ppt_第2页
chapter09 - JDK 50新特性(泛型、可变参数、静态导入).ppt_第3页
chapter09 - JDK 50新特性(泛型、可变参数、静态导入).ppt_第4页
chapter09 - JDK 50新特性(泛型、可变参数、静态导入).ppt_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、JAVA 核心技术(中级),刘彬 微博 ,第十讲 5.0新特性,泛型(Generic) For-Each循环 自动装包/拆包(Autoboxing/unboxing) 可变参数(Varargs) 静态导入(StaticImports),泛型(Generic),1.泛型(Generic) C+通过模板技术可以指定集合的元素类型,而Java在1.5之前一直没有相对应的功能。一个集合可以放任何类型的对象,相应地从集合里面拿对象的时候我们也不得不对他们进行强制得类型转换。猛虎引入了泛型,它允许指定集合里元素的类型,这样你可以得到强类型在编译时刻进行类型检查的好处,List list = new Arr

2、ayList(); list.add(abc); list.add(ddd); list.add(3);,泛型(Generic),/把类写成泛型的好处:把类参数化,不在是唯一的固定的类,根据参数的不同 public class Genericlass /可以有多个类型 E name; K key; /*static E count; public static E getCount(E count) return count; */ /静态属性 静态方法不能用类中定义的泛型参数 ,只有对象才能有泛型标记. public E getName() return name; public void

3、setName(E name) =name; ,泛型(Generic),For-Each循环,2.For-Each循环 For-Each循环得加入简化了集合的遍历。假设我们要遍历一个集合对其中的元素进行一些处理。,voidprocessAll(Collectionc)for(Iteratori=c.iterator();i.hasNext();)MyClassmyObject=(MyClass)i.next();myOcess(); 使用For-Each循环,我们可以把代码改写成: voidprocessAll(Collectionc)for(MyClass

4、myObject:c)myOcess();,For-Each循环,自动装包/拆包(Autoboxing/unboxing),3.自动装包/拆包(Autoboxing/unboxing) 自动装包/拆包大大方便了基本类型数据和它们包装类地使用。 自动装包:基本类型自动转为包装类.(intInteger) 自动拆包:包装类自动转为基本类型.(Integerint) 在JDK1.5之前,我们总是对集合不能存放基本类型而耿耿于怀,现在自动转换机制,inta=3;Collectionc=newArrayList();c.add(a);/自动转换成Integer. Integerb=ne

5、wInteger(2);c.add(b+2); 这里Integer先自动转换为int进行加法运算,然后int再次转换为Integer.,自动装包/拆包(Autoboxing/unboxing),可变参数(Varargs),5.可变参数(Varargs) 可变参数使程序员可以声明一个接受可变数目参数的方法。注意,可变参数必须是函数声明中的最后一个参数。假设我们要写一个简单的方法打印一些对象, util.write(obj1);util.write(obj1,obj2);util.write(obj1,obj2,obj3); 在JDK1.5之前,我们可以用重载来实现,但是这样就需要写很多的重载函数

6、,显得不是很有效。,publicvoidwrite(Object.objs)for(Objectobj:objs)System.out.println(obj);,可变参数(Varargs),静态导入(StaticImports),6.静态导入(StaticImports) 要使用用静态成员(方法和变量)我们必须给出提供这个方法的类。使用静态导入可以使被导入类的所有静态变量和静态方法在当前类直接可见,使用这些静态成员无需再给出他们的类名。,importstaticjava.lang.Math.*;.r=sin(PI*2);/无需再写r=Math.sin(Math.PI); 不过,过度使用这个特

7、性也会一定程度上降低代码地可读性。,静态导入(StaticImports),注释,什么是注释说起注释,得先提一提什么是元数据(metadata)。所谓元数据就是数据的数据。也就是说,元数据是描述数据的。就象数据表中的字段一样,每个字段描 述了这个字段下的数据的含义。而J2SE5.0中提供的注释就是java源代码的元数据,也就是说注释是描述java源代码的。在J2SE5.0中可以自 定义注释。使用时在后面跟注释的名字。,注释,J2SE5.0中预定义的注释在J2SE5.0的java.lang包中预定义了三个注释。它们是Override、Deprecated和SuppressWarnings。下面分

8、别解释它们的含义。,注释,Override被Override注释的方法必须在父类中存在同样的方法程序才能编译通过。也就是说只有下面的代码才能正确编译。,注释,Deprecated 这个注释是一个标记注释。所谓标记注释,就是在源程序中加入这个标记后,并不影响程序的编译,但有时编译器会显示一些警告信息,起到提醒作用,这个方法以后是要被删除的,最好别用。,注释,SuppressWarnings 这个世界的事物总是成对出现。即然有使编译器产生警告信息的,那么就有抑制编译器产生警告信息的。 SuppressWarnings注释就是为了这样一个目的而存在的。 要注意的是SuppressWarnings和前两个注释不一样。这个注释有一个属性。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论