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

Java 强制接口的所有扩展和实现使用有界泛型输入,java,generics,Java,Generics,我想强制GetInstancePojo成为从第一个顶级接口定义的StepPojo的子类。我怎样才能做到这一点?我已经搜索了很多找不到的地方。您必须在整个层次结构中引用该通用参数: public interface AbstractTestStep<I extends StepPojo> { public abstract StepResult run(I t); } public interface Triggers extends AbstractTestStep{ }

我想强制GetInstancePojo成为从第一个顶级接口定义的StepPojo的子类。我怎样才能做到这一点?我已经搜索了很多找不到的地方。

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

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);

}

尽管使用了当前代码,但如果没有声明其他方法,您甚至不需要触发器接口

使用AbstractTestStep是故意的还是指AbstractStep?如果是这样,请将其公开接口触发器扩展了AbstractStep。@VivekKrishna这是他的错别字,请尝试使用接口触发器扩展了AbstractStep问题是限制其他任何人使用相同的运行方法名称定义新方法,参数类型不是。我仍然能够在GetInstance中定义一个新方法,参数不是。希望我没有打扰你。我想是沟通不好。@VivekKrishna你不能强制执行,但这根本不需要。因为当您构建一个API或其他人可以使用的东西时,如果他们更改了任何东西,但它不起作用,他们需要遵循您的接口提供的契约。那不是你的错。总之,不要太麻烦了
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>{}