1

我有一个我想公开的服务层方法,它应该返回一个扩展 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;
}
4

1 回答 1

1

由于的签名getCachedCMSObject是:

T getCachedCMSObject(String cmsKey, Class<T> clazz)

T尽管您可能想要抛出异常而不是返回 null,但您的演员表是不必要的。

于 2012-07-12T15:46:42.237 回答