使用绑定参数的Java Generic可以使用其上限进行实例化吗?

时间:2010-02-26 16:34:34

标签: java generics

例如:

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

然后:

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

这有用吗?我的同事的预感是否定的,但是我找不到任何可以确认的内容,也许文档也没有。

4 个答案:

答案 0 :(得分:4)

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

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


  public static class MyClass1<T extends MyClass2>{}
  public static class MyClass2{}
}

编译得很好。

答案 1 :(得分:2)

我没有看到任何错误。即使MyClass<MyClass> m = new MyClass<MyClass>();也应该是有效的表达式(甚至可能有用)。

答案 2 :(得分:2)

是的,这很好用。下限是包容性的。

答案 3 :(得分:2)

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

super是相反的,所以你可以使用bind类来实现。

并且......你可以编写一个测试来找出:)