我有一个我想公开的服务层方法,它应该返回一个扩展 CMSContent 的对象的实例(例如交货时间、价格)。但是,在方法getCMSContent中,编译器坚持要我对T进行强制转换。这个演员表是否可以接受,还是我违背了泛型的目的?
我使用“-Xlint:unchecked”进行编译,没有收到任何警告,它的功能与我预期的一样。
public <T extends CMSContent> T getCMSContent(String cmsKey, Class<T> clazz) {
T cmsInstance = (T) CMSObjectCache.getCachedCMSObject(cmsKey, clazz);
return cmsInstance;
}
这是getCachedCMSObject的整个方法
public static <T> T getCachedCMSObject(String objectKey, Class<T> cls) {
init();
CMSObject cmsObject = cmsObjectCache.get(objectKey);
if (cmsObject != null) {
return cmsObject.getCMSObject(cls);
}
return null;
}