技术开发 频道

Java 7准备让函数成为一等公民

  排序比较器(代码示例,来自FSM 、Cay Horstmann)

  使用闭包前:

  List<String> list = ...

  Collections.sort(list,
new Comparator<String>() {

  
public int compare(String str1, String str2) {

  
return str1.length() - str2.length();

  }

  });

   使用闭包后:

  List<String> list = ...

  Collections.sort(list, #(String str1, String str2) {

  
return str1.length() - str2.length();

  });

  甚至或简化成:

  Collections.sort(strings,

  #(
String a, String b) a.length() - b.length());

  最后,我们复习一下javadoc中的#的用法:

  引用当前类的成员字段、方法、构造器

@see#field @see#method(Type, Type,...)
@see#method(Type argname, Type argname,...)
@see#constructor(Type, Type,...)
@see#constructor(Type argname, Type argname,...)

  引用已经导入的类的成员字段、方法、构造器,或嵌套类

  @seeClass#field @seeClass#method(Type, Type,...)

  @seeClass#method(Type argname, Type argname,...)

  @seeClass#constructor(Type, Type,...)

  @seeClass#constructor(Type argname, Type argname,...)

  @seeClass.NestedClass @seeClass

  引用其他包里的成员

  @seepackage.Class#field

  @seepackage.Class#method(Type, Type,...)

  @seepackage.Class#method(Type argname, Type argname,...)

  @seepackage.Class#constructor(Type, Type,...)

  @seepackage.Class#constructor(Type argname, Type argname,...)

  @seepackage.Class.NestedClass

  @seepackage.Class

  @seepackage

  因此,在Java 7中,里面提到的大部分问题都得到了改进,甚至包括现在突然宣布要加入的闭包,并让函数成为一等公民。这应该是一件好事,只是,有个小小的疑惑,Java似乎越来越像Ruby这样的动态语言了,Java 7还会是我们熟悉的Java么?

0
相关文章