[英]Java generic multiple bounds error:cannot be inherited with different type arguments
[英]Why cannot be inherited with different type arguments
我已經看到了很多關於這個的問題,但沒有一個看起來正是我所面臨的,我仍然不明白出了什么問題。 我有一個 class 實現了兩個接口,這兩個接口從另一個接口與 generics 擴展。 不管是誰,我都無法在同一個 class 中實現這兩個接口,因為我有一個錯誤說“不能用不同的類型參數繼承”。
與 Generics 的接口:
public interface Observer<O> {
void onEvent(O data);
}
接口A:
public interface EventAObserver extends Observer<String> {
}
接口B:
public interface EventBObserver extends Observer<Integer> {
}
Class 需要監聽這兩個事件並得到錯誤:
public class Listener implements EventAObserver, EventBObserver {
@Override
public void onEvent(Integer data) {
}
@Override
public void onEvent(String data) {
}
}
所有這些麻煩,因為在我的代碼中的其他地方我有一個觀察者列表,我想廣播事件,就像:
for (Observer observer : observers)
observer.onEvent(data);
是否有可能解決這個 inheritance 問題? 還是我應該嘗試完全不同的東西?
謝謝!
由於 generics 在運行時的類型擦除,您應該嘗試不同的方法。 這意味着在運行時 generics 的指定類型都被Object
替換。 因此, Listener
中的onEvent
方法在運行時看起來是一樣的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.