程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> Java中7關於#的用法

Java中7關於#的用法

編輯:關於JSP

      你認識“#”麼?讓我猜猜看,應該不太熟吧。因為在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

      }

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved