[英]Using Java generics in interfaces
我想創建一個具有以下方法的接口:
public interface MyInterface {
public Class<X> getClass();
public void handle(X message);
}
其中X必須在兩種方法中都是相同的類型。 我需要這樣做的原因是我得到的消息是blob需要被轉換到適當的類(使用getClass)然后我想強制實現者實現一個帶有適當類的handle方法(而不是假設有一個並使用反射來調用它)。
看起來這樣做的唯一方法是在接口中添加一個類型參數,如下所示:
public interface MyInterface<T> {
...
}
但這不太理想,因為需要在各種其他類中指定該類型的級聯依賴。 有什么建議? 謝謝!
其中X必須在兩種方法中都是相同的類型
您不能僅通過定義強制接口的兩個方法相互依賴。
getClass
和handle
將始終是2個單獨的方法。
您可能應該做的是有1個方法, handle
和傳遞作為參數類的類 (可以像Enum
或任何指標一樣簡單)並委托給Factory
來創建適當的類來在里面使用handle
方法。
因此handle
方法將(最終)獲得適當的類來使用。
您可以為方法指定泛型類型參數,如下所示:
public <X> void handle(X message);
但是這不能確保方法之間的一致性,所以如果你有:
public <X> Class<X> getClazz();
public <X> void handle(X message);
你不能說兩種方法的<X>
都是一樣的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.