1. 程式人生 > >java 核心技術卷一筆記 6 .2接口 lambda 表達式 內部類

java 核心技術卷一筆記 6 .2接口 lambda 表達式 內部類

設置 close 進行 urn show out print -c 筆記

6.2 接口實例

6.2.1  接口與回調

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

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

1 public interface ActionListener
2 {
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 ActionListener 18 { 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 2018
At the tone ,the time is Sun Mar 18 10:28:56 CST 2018
At the tone ,the time is Sun Mar 18 10:29:01 CST 2018
At the tone ,the time is Sun Mar 18 10:29:06 CST 2018
At 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 表達式 內部類