我想要的是这样的:
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() 会导致一个可怕的强制转换异常。有什么方法可以编写它,以便编译器在上面的示例中警告我 - 并消除对丑陋演员的需要。
谢谢