几个小时以来,我一直在用头撞桌子。
我有这张地图:
private static Map<Class<? extends BaseClass>, Predicate<? extends BaseClass>> constraints;
我有这个方法:
public static <C extends BaseClass> Predicate<C> getConstraints(Class<? super C> clazz) {
if (clazz == BaseClass.class) {
return (Predicate<C>) constraints.getOrDefault(BaseClass.class, x -> true);
}
Class<? super C> superClass = clazz.getSuperclass();
return constraints.getOrDefault(clazz, x -> true).and(getConstraints(superClass));
}
所有这些都应该做的是在Predicate<T>usingand()方法中链接某个类(和超类)的所有约束。泛型对我来说似乎合乎逻辑,但在进行递归调用时仍然出错。getConstraints(Class<? super C>) cannot be applied to Class<capture of ? super E>. 我不明白,因为superClass它的类型Class<? super C>正是我的方法接受的参数。有任何想法吗?
暮色呼如
相关分类