萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> jsp編程 >> Java中7關於#的用法

Java中7關於#的用法

  你認識“#”麼?讓我猜猜看,應該不太熟吧。因為在Java1.4.2時代,“#”僅僅用於在編寫javadoc的注釋內容,用於鏈接(@see)到對應類的具體方法。除此之外,在編寫代碼的時候,我們幾乎不會用到它。

  不過,別驚訝,在Java 7發布之後,“#”或許將成為Java程序員最熟悉的朋友!因為在幾天前(編輯注:本文翻譯於09年11月底,當時Sun剛剛公布說Java 7將包含簡單的閉包),Sun的Java SE和OpenJDK的首席工程師Mark Reinhold,剛剛宣布Java 7將加入一個簡化版的“閉包”特性,其中的關鍵符號,就是“#”。也因為這個原因,Java 7的正式發布時間,將從2010年2月份,推遲到9月份。

  在Java 7中,“#”將讓函數方法,成為Java語言的一等公民。下面來看看如何用#語法實現“閉包”的吧:

  簡單的方法引用示例:

  比如要引用String類的equals方法,應該這麼寫:

  String#equals(Object)

  再看一個例子:

  java.io.File#exists()

  事件監聽器1 (代碼示例,來自Cay Horstmann)

  使用閉包前:

  button.addActionListener(

  new ActionListener() {

  public void actionPerformed(ActionEvent ){

  System.out.println("Hi!"); }

  }

  );

  使用閉包後 :

  button.addActionListener(#(ActionEvent e) System.out.println("Hi!));

  事件監聽器2(代碼示例,來自FSM )

  使用閉包前:

  public void init() {

  JButton button = ...;

  button.addActionListener(new ActionListener() {

  public void actionPerformed(ActionEvent ev) {

  handleAction(ev);

  }

  });

  }

  public void handleAction(ActionEvent ev) {

  // handle event

  }

  使用閉包後:

  使用閉包後:

  public void init() {

  JButton button = ...;

  button.addActionListener(this#handleAction(ActionEvent));

  }

  public void handleAction(ActionEvent ev) {

  // handle event

  }

copyright © 萬盛學電腦網 all rights reserved