欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

java 委托和事件

林子帆1年前9瀏覽0評論

面向對象編程語言中委托(Delegate)和事件(Event)是非常重要的概念。Java語言中也支持委托和事件的實現。

委托是一個封裝了方法的對象。它可以用來替代某個方法的調用,從而實現更加靈活的代碼組織方式。通過委托,一個方法可以作為參數傳遞給另一個方法,在另一個方法內部調用。

public class DelegationExample {
public static void printHello() {
System.out.println("Hello");
}
public static void main(String[] args) {
MyDelegate delegate = DelegationExample::printHello;
delegate.invoke();
}
}
interface MyDelegate {
void invoke();
}

上述代碼中, DelegationExample類中定義了一個靜態方法printHello()。而MyDelegate接口則定義了一個invoke()方法。在main函數中,代碼首先創建了一個委托對象delegate,并將printHello方法作為參數傳遞進去。然后,用delegate對象調用invoke()方法,即可實現printHello()方法的調用。

事件是一種異步編程模式,用于處理程序運行時發生的各種外部事件。Java事件模式定義了兩個組件:事件源和事件監聽器。當事件源觸發了一個事件時,事件監聽器就會被通知并且執行對應的代碼。事件的處理一般會在獨立的線程中進行,從而保證應用程序的流暢運行。

public class EventExample {
public static void main(String[] args) {
Button button = new Button();
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("Button clicked");
}
});
button.click();
}
}
interface ActionListener {
void actionPerformed(ActionEvent e);
}
class Button {
private ActionListener listener;
public void addActionListener(ActionListener listener) {
this.listener = listener;
}
public void click() {
EventQueue.invokeLater(() ->{
listener.actionPerformed(new ActionEvent(this));
});
}
}
class ActionEvent {
private Object source;
public ActionEvent(Object source) {
this.source = source;
}
public Object getSource() {
return source;
}
}

上述代碼演示了一個簡單的事件模型。在main函數中,代碼首先創建了一個Button對象,并添加了一個ActionListener監聽器。然后,通過調用button.click()方法來模擬按鈕的點擊事件。由于事件是在獨立的線程中進行處理的,因此代碼可以保證應用程序的流暢運行。