循环通用依赖 [英] Cyclic generic dependenices

查看:113
本文介绍了循环通用依赖的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

假设我有两个班。每个类都有一个参数。第一类的参数绑定到第二类,反之亦然。但是还有一个额外的要求。该参数也必须由类本身进行参数化。
这可以用例子来解释:

  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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆