2 回答

TA貢獻1798條經(jīng)驗 獲得超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直接使用,因此不需要。
添加回答
舉報