Re: [新聞] Twitter 改用 Java/Scala 之後...
※ 引述《LaPass (LaPass)》之銘言:
: → PsMonkey:EL 讓你可以在 Java 上頭寫 dynamic type language 11/20 15:27
: → PsMonkey:Scala 可以讓你在 Java 上頭寫 funcational language 11/20 15:28
: → PsMonkey:你說普通,那放大絕:所有東西都輸出成 0 跟 1 超無趣 11/20 15:29
: → lovdkkkk:可以把 function 放到陣列裡面之類的... 11/20 15:33
: → lovdkkkk:coding_time/3, compiling_time*3 這樣 11/20 15:35
: 推 LaPass:我自己是寫個統一的介面去處理這種問題....所以感覺沒差... 11/20 15:38
: 之前剛從C#轉到JAVA的時候,找過類似delegate之類的東西
: 在C#中,可以把一個Method存進delegate變數中來用
: 在java中沒這種東西
: 那時候就想找替代方法去做到這件事
//宣告委派型別,等效C# : delegate void Delegate(string str);
class Delegate<T extends Event> {
private List<T> Events = new ArrayList<T>();
public void invoke(String str) {
for (int i = 0; i < Events.size(); i++) {
Events.get(i).onEvent(str);
}
}
public void addEvent(T f) {
Events.add(f);
}
public void removeEvent(T f) {
Events.remove(f);
}
}
interface Event {
public void onEvent(String str);
}
//定義一個符合委派型別的簽名方法
class Message implements Event{
String msg;
public Message(String str) {
msg = str;
}
public void onEvent(String str) {
System.out.println(msg + " " + str + "!");
}
}
//main
public class Test {
public static void main(String[] args) {
Delegate<Event> d = new Delegate<Event>();
Event hello = new Message("Hello");
Event bye = new Message("Good-bye");
d.addEvent(hello);
d.addEvent(bye);
d.invoke("Tom");
}
}
這跟GUI的Listener機制不是一模一樣嗎
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.168.164.58
推
11/21 09:12, , 1F
11/21 09:12, 1F
→
11/21 09:14, , 2F
11/21 09:14, 2F
→
11/21 09:16, , 3F
11/21 09:16, 3F
推
11/21 12:06, , 4F
11/21 12:06, 4F
→
11/21 12:09, , 5F
11/21 12:09, 5F
→
11/21 15:11, , 6F
11/21 15:11, 6F
推
11/21 15:13, , 7F
11/21 15:13, 7F
→
11/21 15:16, , 8F
11/21 15:16, 8F
→
11/21 15:19, , 9F
11/21 15:19, 9F
→
11/21 15:21, , 10F
11/21 15:21, 10F
→
11/21 19:26, , 11F
11/21 19:26, 11F
→
11/21 19:32, , 12F
11/21 19:32, 12F
→
11/21 19:35, , 13F
11/21 19:35, 13F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 4 篇):