私が欲しいのはこのようなものです:
public abstract Class Content {
private Map<Class<? extends Content>, List<? extends Content>> relations;
}
コンテンツには、A、B、C、Dなどのサブクラスがたくさんあります。
最も頻繁な使用例は、すべてのAを取得することです。
public List<A> getA() {
return (List<A>)relations.get(A.class);
}
ちょっと大丈夫-醜いキャストは別として。
しかし、本当の問題は、私が次のような愚かなことをするのを妨げるものは何もないということです。
relations.put(A.class, List<B> myListOfBs);
したがって、上記のgetA()を呼び出すと、ひどいキャスト例外が発生します。コンパイラが上記の例で警告するようにそれを書くことができる方法はありますか?また、醜いキャストの必要性を取り除きます。
ありがとう