【发布时间】:2026-01-20 04:45:02
【问题描述】:
我有一个通用接口 ExternalState<T> 和一个实现它的类:
public class MockState<T extends Comparable<T>> implements ExternalState<T> {
}
然后,我有一个扩展这个实现的类:
public class LunarOccultationState extends MockState<Boolean> {
...
}
我有以下通用方法:
public <T extends Comparable<T>> StateConstraintExpression.Builder equal(List<ExternalState<T>> states, T value) {
for(var state : states){
StateConstraintEqual<T> sce = StateConstraintExpression.buildEqualConstraint(state, value);
this.constraints.add(new StateConstraintExpression(sce));
}
}
return getThis();
}
但是当我尝试调用这个方法时:
equal( lunarOccultationStates, false )
将lunarOccultationStates 设为List 的LunarOccultationState,类型推断失败。
对我来说难以理解的是以下方法(没有列表)中的类型推断有效:
public <T extends Comparable<T>> StateConstraintExpression.Builder equal(ExternalState<T> state, T value) {
StateConstraintEqual<T> sce = StateConstraintExpression.buildEqualConstraint(state, value);
this.constraints.add(new StateConstraintExpression(sce));
return getThis();
}
有人能解释一下吗?
【问题讨论】:
标签: java generics types inference