[英]java generic wildcards
目前,我正在使用服務接口,該服務接口基於主鍵檢索域對象。 但是我感到我沒有有效地使用泛型。
基礎域對象如下所示:
public interface DomainObject<PK extends Serializable> extends Serializable {
PK getID();
}
我的服務界面如下所示:
public interface LoadService<T extends DomainObject<PK>, PK extends Serializable> {
T load(PK ID);
}
這行得通,但是,即使在T內已經知道PK類型,我也必須在服務泛型中指定PK類型。有什么辦法可以避免必須在LoadService接口中再次定義我的PK? 就像是:
LoadService<T extends DomainObject<? extends Serializable as PK> { ... }
幫助將不勝感激!
無法避免這種情況,因為您在'LoadService'中使用了PK類。 我的意思是,您可以像這樣定義服務
interface LoadService<T extends DomainObject<?>> {
void store(T data);
}
但是,如果使用PK類,則不是這種選擇,因為編譯器會檢查PK類型是否與域對象類型兼容。
另一個選擇是從DomainObject刪除類型參數,即執行以下操作:
interface DomainObject extends Serializable {
Serializable getID();
}
如果T
既擴展了DomainObject
又實現了Serializable
,則嘗試對type參數使用多個范圍:
interface LoadService<T extends DomainObject<T> & Serializable> {
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.