iT邦幫忙

0

在Java使用Event類別,用implements跟用泛型取得Event類別功能,兩者的差異?

java的event是長這樣:

public interface Event<T>{
    ......
    public void fire(T event);
    ......
}

若現在定義一個新的event:

public class TestEvent implements Serializable {
    ......
}

並宣告一個屬性,長成以下這樣:

private Event<TestEvent> testEvent;

那以下的code是可以正常觸發事件的,其實就是觸發testEvent:

testEvent.fire(new TestEvent(......));

那我想請問,為什麼testEvent明明只是TestEvent類別,並沒有繼承或實作Event類別,

那為何testEvent是可以呼叫Event類別的fire方法卻不會出錯呢?

感覺是跟泛型有關,但是又想不通原因,請問邏輯或是原理是什麼呢?

看更多先前的討論...收起先前的討論...
fillano iT邦超人 1 級 ‧ 2020-04-13 11:40:20 檢舉
https://matthung0807.blogspot.com/2017/09/java-interfacedefault-methods.html

猜測是這個原因。
....不對,我看錯重點。private Event<TestEvent> testEvent的型別是「Event」,TestEvent只是一個泛型的參數。

...糟糕了,不小心用不同帳號發言,我死....
^_^

聽首老歌先
https://www.youtube.com/watch?v=n8H-V8llKP4#t=19s
fongyi iT邦新手 5 級 ‧ 2020-04-14 08:39:35 檢舉
首先, testEvent 跟 TestEvent 不一樣,大小寫有差
所以 TestEvent 是類別,而 testEvent 是 Event<TestEvent> 的物件。
其他坐等大神ww

尚未有邦友回答

立即登入回答