您的位置:首页 > 编程语言 > Java开发

JDK 5.0新特性

2009-10-15 14:32 288 查看
JDK5.0新特性中主要包含以下方面:

1.泛型(Generics) 2.增强的for 循环 3.自动装包与自动拆包

4.枚举(Enum) 5.静态导入(static import) 6.可变参数

7.Printf格式输出 8.IO流输入(Scanner) 9.注解(Annotation) 注解是非常重要的一个新特性

-------------

使用泛型的意义是: 放进去之后(set()方法),再取出来(get()方法),就不用再进行类型转换了

下面举一个例子:

package com.test.jdk;

//这个表示泛型类型通配声明

@SuppressWarnings("unchecked")

public class GenericTest<T> {

private T foo;



public T getFoo() { return foo; }

public void setFoo(T foo) { this.foo = foo; }

public static void main(String[] args) {

GenericTest<? extends List> ge = null; //这里ge是一个引用,也就是内存中一块地址,它不是对象

ge = new GenericTest<ArrayList>(); //此时 ge 是一个对象

ge = new GenericTest<LinkedList>();



GenericTest<? super List> ge2 = null; //这里super 表示List的上一层

ge2 = new GenericTest<Object>();



GenericTest<String> ge3 = new GenericTest<String>();

ge3.setFoo("hello world");



GenericTest<?> ge4 = ge3; //将ge3赋给ge4,这个问号表示ge4可以指向任何的Object类型的对象

System.out.println(ge4.getFoo()); //取得

ge4.setFoo(null); //移除

System.out.println(ge4.getFoo());



//ge4.setFoo("welcome"); //这种写法编译都通不过,不能增加类型

} }

结果:输出 hello world ,null

GenericFoo<? extends List> foo = null;

这个问号表示只有GenericFoo后面的<>中的类符合 List 接口,才可以用 foo对象

简单的说,实例化类型持有者时,它必須是实现List的类别或其子类别,

要定义这样一个名称,您可以使用 ‘?’ 通配字元,并使用“extends”关键字限定类型持有者的型态

枚举:

枚举与类相似,但在定义枚举时,里面的实例是确定的,在声明后,不能再改变。

类可以有多个实例,可以通过 new 方法来产生

枚举可以看作是一种特殊的类,它也有构造方法,也可以在枚举里面定义属性,方法等

定义枚举本质上就是在定义一个类别,只不过很多细节由编译器完成了,所以在某些程度上,enum关键字的作用就像是class或interface

枚举的实例都是 public static final 类型

枚举的作用(这个非常重要):主要是确定里面的实例的数量和名字

注解Annotation:

JDK 注解共有7类:

Override, SuppressWarnings, Deprecated,Retention,Target,Documented,Inherited

注解(Annotation):是一种注释语法,用来对程序进行一些配置或操作

以下是JDK内置的三个Annotation

如@Override 重写

@SuppressWarnings("unused") 压制警告信息

@Deprecated 表示过时的方法,属于捣乱的注解

也可以自定义注解

Annotation的作用范围@Retention:

@SOURCE 表示在源代码范围内起作用 如@Override

@CLASS 表示在Class文件范围内起作用

@RUNTIME 表示在运行时起作用

如果要在代码中通过反射取得Annotation 中设置的属性,必须将范围设置为RUNTIME

设置Annotation使用位置: @Target

只能在Annotation中出现:public static final ElementType ANNOTATION_TYPE

只能在构造方法中出现: public static final ElementType CONSTRUCTOR

本地变量上使用: public static final ElementType LOCAL_VARIABLE

只能在方法上使用: public static final ElementType METHOD

在参数声明上使用: public static final ElementType PARAMETER

在包的声明上使用: public static final ElementType PACKAGE

只能在类或接口上使用: public static final ElementType TYPE

文档注释中出现Annotation: @Documented

继承类中同时继承Annotation:@Inherited
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: