循环通用依赖 [英] Cyclic generic dependenices
问题描述
这可以用例子来解释:
public class Class1< T extends Class2< Class1>> {
...
}
public class Class2< T extends Class1< Class2>> {
...
}
然而,这种结构不起作用。编译器告诉类型参数Class2不在它的边界内
。这是完全可以理解的,因为编译器无法解决这种无穷递归。
但是我想知道是否有任何优雅的方式通过泛型来获得想要的东西?
我想你应该这样写:
class Class1< T extends Class2<?扩展Class1< T>>> {}
class Class2< T扩展Class1<?扩展Class2< T>>> {}
或
class Class1< T扩展Class2<?扩展Class1<>>>> {}
class Class2< T扩展Class1<?扩展Class2<>>>> {}
它适用于Java 1.6。
Let's say I have two classes. Each class has one parameter. Parameter of first class bounded to a second class and vice versa. But there is an additional requirement. This parameter must also be parametrized by class itself. This is better to be explained by example:
public class Class1<T extends Class2<Class1>> {
...
}
public class Class2<T extends Class1<Class2>> {
...
}
However, this construction doesn't work. Compiler tells Type parameter Class2 is not within its bound
. This is perfectly understandable, because compiler unable to resolve this endless recursion.
But I'd like to know is there any elegant way to get what want by means of generic?
I think you should write like this:
class Class1<T extends Class2<? extends Class1<T>>> { }
class Class2<T extends Class1<? extends Class2<T>>> { }
or
class Class1<T extends Class2<? extends Class1<?>>> { }
class Class2<T extends Class1<? extends Class2<?>>> { }
It works on Java 1.6.
这篇关于循环通用依赖的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!