泛型(Generics)
增强的“for”循环(Enhanced For loop)
自动置入/自动取出(Autoboxing/Unboxing)
类型安全的枚举(Type safe enums)
静态导入(Static import)
可变参数 (Var args)
[size=large]泛型(Generics) [/size]
泛型是JDK1.5中一个最重要的特征。通过引入泛型,我们将获得编译时类型的安全和运行时更小地抛出ClassCastException的可能。
在JDK1.5中,你可以声明一个集合将接收/返回的对象的类型
如果使用泛型类别,但声明时不指定类型呢?
那么预设会使用Object,不过需要自己进行类型转换了,
但编译器会发出警告,告诉您这可能是不安全的操作
如果使用泛型,只要代码在编译时没有出现警告,
就不会遇到运行时[color=red]ClassCastException[/color][color=darkred]类转换异常[/color]
[size=large]限制泛型可用类型[/size]
在定义泛型类别时,预设可用使用任何的类型来实例化泛型中的类型,但是如果想要限制使用泛型类别时,只能用某个特定类型或者是其子类型才能实例化该类型时,可用在定义类型时,使用[color=red]extends[/color]关键字指定这个类型[color=red] 必须是继承某个类,或者实现某个接口[/color]
正确:public class GenericFoo<T [color=red]extends [/color]List> {}
错误:泛型绝对不可以使用implements关键字来 实现某个接口,这里没有为什么,这就是语法要求!!!
public class GenericFoo<T [color=red]implements [/color]List> {}
当没有指定泛型继承的类型或接口时,,默认使用[color=red]T extends Object,[/color]所以默认情况下任何类型都可以作为参数传入
public class GenericFoo<T> {} 等同 public class GenericFoo<T extends Object> {}
增强的“for”循环(Enhanced For loop)
自动置入/自动取出(Autoboxing/Unboxing)
类型安全的枚举(Type safe enums)
静态导入(Static import)
可变参数 (Var args)
[size=large]泛型(Generics) [/size]
泛型是JDK1.5中一个最重要的特征。通过引入泛型,我们将获得编译时类型的安全和运行时更小地抛出ClassCastException的可能。
在JDK1.5中,你可以声明一个集合将接收/返回的对象的类型
如果使用泛型类别,但声明时不指定类型呢?
那么预设会使用Object,不过需要自己进行类型转换了,
但编译器会发出警告,告诉您这可能是不安全的操作
如果使用泛型,只要代码在编译时没有出现警告,
就不会遇到运行时[color=red]ClassCastException[/color][color=darkred]类转换异常[/color]
[size=large]限制泛型可用类型[/size]
在定义泛型类别时,预设可用使用任何的类型来实例化泛型中的类型,但是如果想要限制使用泛型类别时,只能用某个特定类型或者是其子类型才能实例化该类型时,可用在定义类型时,使用[color=red]extends[/color]关键字指定这个类型[color=red] 必须是继承某个类,或者实现某个接口[/color]
正确:public class GenericFoo<T [color=red]extends [/color]List> {}
错误:泛型绝对不可以使用implements关键字来 实现某个接口,这里没有为什么,这就是语法要求!!!
public class GenericFoo<T [color=red]implements [/color]List> {}
当没有指定泛型继承的类型或接口时,,默认使用[color=red]T extends Object,[/color]所以默认情况下任何类型都可以作为参数传入
public class GenericFoo<T> {} 等同 public class GenericFoo<T extends Object> {}