第1章JDK5新特性.pptVIP

  • 10
  • 0
  • 约6.25千字
  • 约 24页
  • 2016-08-21 发布于重庆
  • 举报
第1章JDK5新特性

* * * * * * 思考:@Override、@SuppressWarnings和@Deprecated这三个注解的含义是什么? @Override表示一个方法声明打算重写超类中的另一个方法声明。如果方法利用此注解类型进行注解但没有重写超类方法,则编译器会生成一条错误消息。 该注解的定义如下: @Target(value=METHOD) @Retention(value=SOURCE) public @interface Override JDK 新特性 9.2 泛型 为什么需要泛型? 泛型是对类型的抽象。比如集合类中的强制类型转换问题。P167,myIntList对象从List类型变为ListInteger类型,则不需要在第3行进行强制类型转换。java.util 包下ListE就是一个泛型接口。 了解泛型 泛型通过类型参数,使一个类型或一个方法能在多种类型的对象上操作,并保证编译时的类型安全性。 LinkedListE类定义和LinkedListInteger类引用中涉及如下术语: LinkedList称为原始类型,整个LinkedListE称为泛型类型,。用具体的类型替换类型变量就可以实例化泛型类型,如LinkedListInteger称为参数化的类型,读作“Integer的LinkedList”, 念typeof LinkedListE中的E称为类型变量或类型参数。 LinkedListInteger中的Integer称为类型参数的实例或实际类型参数。 说明:在Java库中,使用变量E表示集合的元素类型,K和V表示Map的关键字与值的类型。T(有时还可以用临近的字母U和S)表示任意类型。 参数化类型与原始类型的兼容性: 参数化类型可以引用一个原始类型的对象,编译报告警告,例如, CollectionString c = new Vector();//可不可以? 原始类型可以引用一个参数化类型的对象,编译报告警告,例如, Collection c = new VectorString();//? 参数化类型不考虑类型参数的继承关系: VectorString v = new VectorObject(); //错误 VectorObject v = new VectorString(); //仍然错误 即Foo类是Bar类的子类,而G是一个泛型,就不能说GFoo是GBar的子类。 编译器不允许创建泛型变量的数组。即在创建数组实例时,数组的元素不能使用参数化的类型,例如,下面语句有错误: VectorInteger vectorList[] = new VectorInteger[10]; 泛型中的?通配符 问题: 定义一个方法,该方法用于打印出任意参数化类型的集合中的所有数据,该方法如何定义呢? 错误方式: public static void printCollection(CollectionObject cols) { for(Object obj:cols) { System.out.println(obj); } /* cols.add(string);//没错 cols = new HashSetDate();//会报告错误!*/ } 正确方式: public static void printCollection(Collection? cols) { for(Object obj:cols) { System.out.println(obj); } //cols.add(string);//错误,因为它不知自己未来匹配就一定是String cols.size();//没错,此方法与类型参数没有关系 cols = new HashSetDate(); } Collection?是所有具体Collection的超类,读作“未知集合”,通配符?能匹配任何类型的元素,称为“通配类型”。 一个未知集合的引用,都只是“只读”的,而且读出的元素只能当成Object对象处理。故未知集合的引用常作为方法的形参。 例子:P169,Canvas.java 泛型中的?通配符的扩展 限定通配符的上边界: 正确:Vector? extends Number x = new VectorInteger(); 错误:Vector? extends Number x = new VectorString(); 限定通配符的下边界: 正确:Vector? super Integer x = new VectorNumber(); 错误:Vector? super Integer x = new VectorByte(); 例子:P171,Cen

文档评论(0)

1亿VIP精品文档

相关文档