你认识“#”么?让我猜猜看应该不太熟吧因为在Java时代“#”仅仅用于在编写javadoc的注释内容用于链接(@see)到对应类的具体方法除此之外在编写代码的时候我们几乎不会用到它
不过别惊讶在Java 发布之后“#”或许将成为Java程序员最熟悉的朋友!因为在几天前(编辑注本文翻译于年月底当时Sun刚刚公布说Java 将包含简单的闭包)Sun的Java SE和OpenJDK的首席工程师Mark Reinhold刚刚宣布Java 将加入一个简化版的“闭包”特性其中的关键符号就是“#”也因为这个原因Java 的正式发布时间将从年月份推迟到月份
在Java 中“#”将让函数方法成为Java语言的一等公民下面来看看如何用#语法实现“闭包”的吧
简单的方法引用示例
比如要引用String类的equals方法应该这么写
String#equals(Object)
再看一个例子
javaioFile#exists()
事件监听器 (代码示例来自Cay Horstmann)
使用闭包前
buttonaddActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent ){
Systemoutprintln("Hi!"); }
}
);
使用闭包后 :
buttonaddActionListener(#(ActionEvent e) Systemoutprintln("Hi!));
事件监听器(代码示例来自FSM )
使用闭包前
public void init() {
JButton button = ;
buttonaddActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ev) {
handleAction(ev);
}
});
}
public void handleAction(ActionEvent ev) {
// handle event
}
使用闭包后
使用闭包后
public void init() {
JButton button = ;
buttonaddActionListener(this#handleAction(ActionEvent));
}
public void handleAction(ActionEvent ev) {
// handle event
}