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;
}