簡體   English   中英

Java用通用類型創建通用類

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM