抽象ファクトリ パターンでは、ジェネリックを使用しています。Serializable を拡張する BaseEntity インターフェイスがあり、Employee クラスは BaseEntity を実装します。抽象クラスには、この getJavaObj メソッドがあります
getJavaObj()
Long empId
を受け取って返すメソッドです。Map<String, ? extends BaseEntity>
public abstract Map<String, ? extends BaseEntity> getJavaObj(Long id);
ジェネリックを使用して、それが提供するメインクラスでこれを実行しようとしています。
Map<String, Employee> emp = getJavaObj(empId);
このエラーが発生します Type safety: Unchecked cast from Map<String,capture#1-of ? extends BaseEntity>
to Map
このように型キャストを行うと
Map<String, Employee> emp = (Map<String, Employee>)getJavaObj(empId);
この警告が表示されます
型の安全性: から Map への未チェックのキャスト型の安全性: からMap へ
Map<String,capture#1-of ? extends Serializable>
の未チェックのキャストMap<String,capture#1-of ? extends BaseEntity>
型キャストを回避したり、型キャスト後でも警告を解決する方法はありますか? 私が返しているオブジェクトは、BaseEntity インターフェイスを介して Serializable に拡張されているためです。