2 回答
TA贡献1798条经验 获得超3个赞
一个较小的变化仅仅是为了简化类型变量声明在EntityStep一个Entity代替的EntityStepInput:
interface EntityStep<E extends Entity> {
void process(EntityStepInput<? extends E> i);
}
然后:
class FirstEntityStep implements EntityStep<Entity> {
@Override
public void process(EntityStepInput<? extends Entity> i) {}
}
class SecondEntityStep implements EntityStep<Entity> {
@Override
public void process(EntityStepInput<? extends Entity> i) {}
}
class ThirdEntityStep implements EntityStep<DerivedEntity> {
@Override
public void process(EntityStepInput<? extends DerivedEntity> i) {}
}
它与以前完全相同,但是声明更容易理解。
仅T extends EntityStepInput<...>在要使用某些特定的子类时才需要,但由于始终EntityStepInput直接使用,因此不需要。
添加回答
举报