[英]Java create generic class with generic type
我正在嘗試使用DualCache庫實現通用緩存類。 當實例化DualCache類時,還需要提供一個序列化器實例,該實例本身是一個通用類,其類型應與其所連接的DualCache相同。
簡而言之,我需要以某種方式將T的類傳遞給JSONSerializer
構造函數,如代碼所示,但不知道如何實現。
public class Cache<T> {
private boolean initialized = false ;
private ArrayList<Long> cachedItemList = new ArrayList<>() ;
private DualCache<T> dualCache ;
public void initialize(Context context) {
Log.e(DEBUG_TAG, "Cache/initialize") ;
if (!initialized) {
dualCache = new Builder<T>(ProjectInfo.cacheName, ProjectInfo.APP_VERSION)
.enableLog()
.useReferenceInRam(ProjectInfo.diskCacheSize, new SizeOf<T>() {
@Override
public int sizeOf(T object) {
return ProjectInfo.diskCacheSize / numCachedItems;
}
})
.useSerializerInDisk(ProjectInfo.diskCacheSize, true,
new JsonSerializer<>(T.class), context)
.build() ;
getCurrentCachedItemsList(context) ;
printCurrentItems(context) ;
initialized = true ;
}
}
}
假設有一個JsonSerializer<T>(Class<T>)
形式的構造函數,您將需要做完全相同的事情。
private final Class<T> clazz;
public Cache(Class<T> clazz) {
this.clazz = clazz;
}
public void initialize(Context context) {
...
new JsonSerializer<>(clazz), context)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.