java 核心技術卷一筆記 6 .2介面 lambda 運算式 內部類

來源:互聯網
上載者:User

標籤:ack   個數   col   tool   one   核心技術   有關   object   點擊   

6.2 介面執行個體

6.2.1  介面與回調

在java.swing包中有一個Timer類,可以使用它在到達給定的時間間隔時發出通告,假如程式中有一個時鐘,就可以請求每秒鐘獲得一個通告,以便更新時鐘的錶盤。

在構造定時器時,需要設定一個時間間隔,並告知定時器,當到達時間間隔時需要做些什麼操作,(java將某個類的對象傳遞給定時器,然後的定時器調用這個對象的方法。)-----定時器需要知道調用了哪一個方法,並要求傳遞的對象所屬的的類實現了java.awt.event包的ActionListener介面。

1 public interface ActionListener2 {3     void actionPerformed(ActionEvent event);4 }

當到達指定的時間間隔時,定時器就調用actionPerformed方法。

接下來,構造這個類的一個對象,並將他傳遞給Timer構造器。

1 ActionListener listener =new TimePrinter();2 Timer t =new Timer(10000,listener);

下面程式給出了定時器和監聽器的操作行為,在定時器啟動以後,程式將彈出一個訊息對話方塊,並等待使用者點擊OK按鈕來終止程式的運行。定時時間為5秒;

 1 package cc.openhome; 2 import java.awt.Toolkit; 3 import java.awt.event.ActionEvent; 4 import java.awt.event.ActionListener; 5 import java.util.Date; 6 import javax.swing.JOptionPane; 7 import javax.swing.Timer; 8 public class TimerTest { 9     public static void main(String[] args) {10         ActionListener listener =new TimePrinter();11         Timer t=new Timer(5000,listener);12         t.start();13         JOptionPane.showMessageDialog(null, "Quit program?");14         System.exit(0);15     } 16 }17 class TimePrinter implements ActionListener18 {19     public void actionPerformed(ActionEvent evet )20     {21         System.out.println("At the tone ,the time is "+new Date());22         Toolkit.getDefaultToolkit().beep();23     }24 }
At the tone ,the time is Sun Mar 18 10:28:51 CST 2018At the tone ,the time is Sun Mar 18 10:28:56 CST 2018At the tone ,the time is Sun Mar 18 10:29:01 CST 2018At the tone ,the time is Sun Mar 18 10:29:06 CST 2018At the tone ,the time is Sun Mar 18 10:29:11 CST 2018成功構建 (總時間: 26 秒)
run:

Api    javax.swing.JOptionPane 1.2

        static void showMessageDialog(ComPonent parent,Object message)

       顯示一個包含一條訊息和OK按鈕的對話方塊,這個對話方塊將位於其parent組件的中央。

API javax.swing..Timer 1.2

    Timer(int interval ,ActionListener Listener)

   構造一個定時器,每隔interval毫秒通告listener一次。

    void start()

啟動定時器。一旦啟動成功,定時器將調用監聽器的actionPerformed。

API void stop()

       停止定時器,一旦停止成功,定時器將不在調用監聽器的actionPerformed。

java。awt.Toolkit  1.0

   static  Toolkit getDefaultToolkit()

    獲得預設的工具箱。工具箱包含有關GUI環境的資訊。

    void beep()

   發出一聲鈴響。

 

 

6.2.2  Comparator介面

假設我們希望按長度遞增的順序對字串進行排序,而不是按字典順序進行排序。

處理這種情況,Arrays.sort方法還有第二個版本,有一個數組和一個比較子(comparator)作為參數,比較子實現了Comparator介面的類的執行個體。

public interface Comparator<T>{    int compara(T first,second);}

要按長度比較字串,可以如下定義一個實現Comparator<String>的類

class LengthComparator implements Comparator<String>{    public int compare(String first,String second)    {        return first.length()-second.length();    }}

具體完成比較時,需要建立一個執行個體:

Comparator<String> comp =new lengthComparator();
if (comp.compre(words[i],words[j]>0)...

要對一個數組排序,需要為Arrays.sort方法傳入一個LengthComparator對象:

String[] friengds ={"Peter","Paul","Mary"};
Arrays.sort(friends,new LengthComparator());

 

java 核心技術卷一筆記 6 .2介面 lambda 運算式 內部類

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.