【IT168 文档】2010年5月23号,Java度过了它的第15个生日!
近日,Oracle又发布了一个令人振奋的消息,发布了实现闭包的第一个版本,在测试案例中,Java compiler syntax 发生了变化。你可以在此查看测试案例。
支持以下新特性:
Function types syntax
Function types subtyping
Full support for lambda expression of type 1 and 2
Inference of thrown types/return type in a lambda
Lambda conversion using rules specified in v0.1.5 draft
Support references to ‘this’ (both explicit and implicit)
Translation using method handles
函数类型在默认情况下不会启动,必须使用XDallowFunctionTypes来启用。
type 1 lambda表达式示例:
int i1 = #()(3).(); //i1 = 3
Integer i2 = #()(3).(); //i2 = 3
int i3 = #(int x)( x + 1 ).(3); //i3 = 4
int i4 = #(Number x)(x.intValue()).(new Float(3.0f)); //i4 = 3
Integer i2 = #()(3).(); //i2 = 3
int i3 = #(int x)( x + 1 ).(3); //i3 = 4
int i4 = #(Number x)(x.intValue()).(new Float(3.0f)); //i4 = 3
type 2 :
Java代码
int i1 = #(){ return 3; }.(); //i1 = 3
Integer i2 = #(){ return 3; }.(); //i2 = 3
int i3 = #(int x){ return x + 1; }.(3); //i3 = 4
int i4 = #(Number x){ return x.intValue(); }.(new Float(3.0f)); //i4 = 3
Integer i2 = #(){ return 3; }.(); //i2 = 3
int i3 = #(int x){ return x + 1; }.(3); //i3 = 4
int i4 = #(Number x){ return x.intValue(); }.(new Float(3.0f)); //i4 = 3