Java 实现泛型交互的泛型类型参数
在Java应用程序中,我想使用一个泛型类型参数,它实现一个使用泛型参数本身的接口Java 实现泛型交互的泛型类型参数,java,generics,interface,Java,Generics,Interface,在Java应用程序中,我想使用一个泛型类型参数,它实现一个使用泛型参数本身的接口 public interface SuperInterface<T> { ... } public interface MyInterface extends SuperInterface<MyClass> { ... } public class Worker<T extends SuperInterface<U>> extends SuperWorker&l
public interface SuperInterface<T> { ... }
public interface MyInterface extends SuperInterface<MyClass> { ... }
public class Worker<T extends SuperInterface<U>> extends SuperWorker<String, Boolean> {
}
公共接口超级接口{…}
公共接口MyInterface扩展超级接口{…}
公共类工作者扩展超级工作者{
}
但是,类声明不会这样工作。T应为MyInterface类型(或实现超级接口的任何其他接口),U应为MyClass类型(或根据接口的任何其他类)。您必须在顶层声明所有类型参数。这很烦人,但事实就是这样
public class Worker<U extends MyClass, T extends SuperInterface<U>> { ...
公共类工作程序{。。。
参数的顺序并不重要;您也可以执行Worker
。重要的是每个参数都在嵌套泛型的顶层声明
这是一个完整的课程:
public class MyClass {
public interface SuperInterface<T>{}
public interface MyInterface extends SuperInterface<MyClass> {}
public class Worker<U extends MyClass, T extends SuperInterface<U>> {}
public void compileTest() {
// just to make sure the declaration compiles
Worker<MyClass, MyInterface> worker = null;
}
}
公共类MyClass{
公共接口超级接口{}
公共接口MyInterface扩展超级接口{}
公共阶级工作者{}
public void compileTest(){
//只是为了确保声明能够编译
Worker=null;
}
}
很乐意提供帮助!如果U
可以是任何类型,则无需写出U extends Object
。只需执行class Worker