代码之家  ›  专栏  ›  技术社区  ›  Daniel Bingham

使用绑定参数的Java泛型可以用其上界实例化吗?

  •  1
  • Daniel Bingham  · 技术社区  · 16 年前

    例如:

    class MyClass<T extends MyClass2> {
        // Do stuff...
    } 
    

    然后:

    MyClass<MyClass2> myClass = new MyClass<MyClass2>();
    

    这行吗?我同事的直觉是否定的,但我找不到任何证据来证实这一点,文件可能也暗示了这一点。

    4 回复  |  直到 16 年前
        1
  •  2
  •   anthares    16 年前

    我看不出有什么问题。偶数 MyClass<MyClass> m = new MyClass<MyClass>(); 应该是有效的表达式(可能甚至有用)。

        2
  •  4
  •   Kylar    16 年前

    这个很好用。我刚刚写的:

    public class MoreGeneric {
      public static void main(String[] args) {
        new MyClass1<MyClass2>();
       }
    
    
      public static class MyClass1<T extends MyClass2>{}
      public static class MyClass2{}
    }
    

    它编译得很好。

        3
  •  2
  •   noah    16 年前

    是的,那很好用。下限是包含的。

        4
  •  2
  •   helios    16 年前

    是的,你可以。 T extends ClassX 检查那个 ClassX.isAssignableFrom(T.class)) .

    super是oposite,所以也可以使用绑定类。

    还有…你可以编写一个测试程序来找出:)