我使用 Ehcache 3 和 Declared Cache 作为:
private Cache<String,GenericClassForList<Person>> personCache;
例如:我有许多来自数据库的要放入缓存的对象列表:
List<Person> personlist=perDao.getAll();
List<Customer> custList=comDao.getAll();
List<Company> companylist=compDao.getAll();
所以,我需要将这些不同类型的列表放在我的缓存中。所以,我尝试制作通用类来将这些列表初始化为:
package com.cache.cachemanager;
import java.util.ArrayList;
import java.util.Collection;
public class GenericClassForList<T> extends ArrayList<T> {
public GenericClassForList(final Collection<? extends T> c) {
super(c);
}
}
我从这里访问这个通用类:
public class CacheHelper {
private CacheManager cacheManager;
private Cache<String,GenericClassForList<Person>> personCache;
public CacheHelper() {
}
//initialziing cache
public void putInCacheFromDb() {
System.getProperties().setProperty("java -Dnet.sf.ehcache.use.classic.lru", "true");
cacheManager= CacheManagerBuilder
.newCacheManagerBuilder().build();
cacheManager.init();
personCache = cacheManager
.createCache("cacheOfe", CacheConfigurationBuilder
.newCacheConfigurationBuilder(
String.class,GenericClassForList<Person>.class,
ResourcePoolsBuilder.heap(100000)).withExpiry(Expirations.timeToLiveExpiration(Duration.of(60000,
TimeUnit.SECONDS))));
}
}
但是,在GenericClassForList<Person>.class
如下所示的这行代码中,它向我显示了红色标记(错误):
.newCacheConfigurationBuilder(
String.class,GenericClassForList<Person>.class,
我无法初始化缓存,因为它向我显示:
无法从参数化类型中选择
我的泛型类有什么问题,或者我怎样才能让我的缓存能够识别这个泛型类?我的缓存没有让我初始化这个泛型类。