代码之家  ›  专栏  ›  技术社区  ›  wax

循环泛型依赖

  •  1
  • wax  · 技术社区  · 15 年前

    假设我有两个班。每个类都有一个参数。第一类的参数有界于第二类,反之亦然。但还有一个额外的要求。这个参数也必须由类本身参数化。 最好用例子来解释:

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

    Type parameter Class2 is not within its bound . 这是完全可以理解的,因为编译器无法解析这种无休止的递归。

    3 回复  |  直到 15 年前
        1
  •  3
  •   uthark    15 年前

    我觉得你应该这样写:

     class Class1<T extends Class2<? extends Class1<T>>> { }  
     class Class2<T extends Class1<? extends Class2<T>>> { }
    

     class Class1<T extends Class2<? extends Class1<?>>> { }  
     class Class2<T extends Class1<? extends Class2<?>>> { }
    

        2
  •  6
  •   wax    15 年前

    看来我突然找到了答案。

    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>> {
    }
    

    这是完全令人兴奋的,但它似乎是工作。

        3
  •  1
  •   Community CDub    8 年前

    我不确定我是否理解您的问题-请注意,由于您的示例中的两个类都是泛型的,因此作为参数的它们还应该包括它们的泛型参数,这将导致无休止的递归。

    an earlier answer of mine .