循环通用依赖项

wax*_*wax 1 java generics

假设我有两节课.每个类都有一个参数.第一类的参数限制为第二类,反之亦然.但还有一项要求.此参数还必须由类本身进行参数化.最好通过示例解释:

public class Class1<T extends Class2<Class1>> {
    ...
}

public class Class2<T extends Class1<Class2>> {
   ...
}
Run Code Online (Sandbox Code Playgroud)

但是,这种结构不起作用.编译告诉Type parameter Class2 is not within its bound.这是完全可以理解的,因为编译器无法解决这种无休止的递归.

但我想知道有什么优雅的方法可以通过通用获得想要的东西吗?

wax*_*wax 6

看起来我突然找到了答案.

public class Class1<T extends Class2<P, T>, P extends Class1<T,P>> {
}

public class Class2<T extends Class1<P, T>, P extends Class2<T, P>> {
}
Run Code Online (Sandbox Code Playgroud)

这完全是令人兴奋的,但似乎有效.