强制接口的所有扩展和实现使用有界的通用输入

时间:2018-08-13 05:30:44

标签: java generics

public interface AbstractTestStep<I extends StepPojo> {

    public abstract StepResult run(I t);
}

public interface Triggers extends AbstractTestStep{
}

public interface GetInstance extends Triggers{

    StepResult run(GetInstancePojo t);

}

我想强制GetInstancePojo成为从第一个顶级接口定义的StepPojo的子类。我该如何实现?我已经搜索了很多东西,找不到了。

1 个答案:

答案 0 :(得分:2)

您必须在整个层次结构中引用该通用参数:

public interface AbstractStep<I extends StepPojo>{
    StepResult run(I i);
}

public interface Triggers<I extends StepPojo> extends AbstractStep<I>{}

public interface GetInstance extends Triggers<GetInstancePojo>{}

使用当前代码,您甚至不需要Triggers接口(前提是您没有声明其他方法)