[英]Using generic class as type parameter
我想使用一個泛型類作為另一個泛型類的類型參數。
起初我的類定義是這樣的:
class Foo<T, R extends BaseDto> {}
然后我的要求發生了變化,我不得不為我的R
類型使用包裝器/持有人類
我到目前為止的嘗試:(給出編譯時錯誤: Bar<R>
上預期的類或接口)
class Bar<T extends BaseDto> {
private T dto;
public Bar(T dto) {
this.dto= dto;
}
// getters and setters
}
class Foo<T, Bar<R>> {
private T entity;
private R dto;
// getters and setters
}
我不能將它用作Foo<T, Object>
因為這樣使用此類的客戶將不知道他們實際上需要從Object
到Bar
。
我將如何實施這種行為?
不要更改類標題,而是將使用R
的類中的所有位置都替換為Bar<R>
。
所以類頭保持不變:
class Foo<T, R extends CustomClass>
但是假設您有一個R
類型的字段。 這需要更改為Bar<R>
:
Bar<R> someField;
看起來你需要的可能是:
class Foo<T, R extends CustomClass, S extends Bar<R>>
你會用
class Foo<T extends CustomClass, R extends Bar<T>> {}
如果Bar
是固定的,即,如果用戶不需要另一個擴展Bar
類,那么您需要擺脫R
並只在Foo
使用Bar<T>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.