Java Generics代码错误

时间:2016-12-21 12:04:57

标签: java generics

我是Generics的新手,并试图理解为什么这段代码会编译:

public Collection<Class<Subclass>> testFunction() {

    return Collections.singleton(Subclass.class);
}

此代码不会:

public Collection<Class<? extends SuperClass>> testFunction() {

    return Collections.singleton(Subclass.class);
}

我的SubClass看起来像这样:

public class Subclass extends SuperClass{

}

1 个答案:

答案 0 :(得分:3)

上面用Java8编译罚款

class SuperClass { }
class Subclass extends SuperClass{ }

class Test {
  public Collection<Class<? extends SuperClass>> testFunction() {
    return Collections.singleton(Subclass.class);
  }
}

重点是:使用Java 8 ,类型推断得到了大量的重新设计和改进。

所以我的猜测就是:这不会为你编译,因为你使用的是Java 7;简单地说,编译器没有足够好&#34;正确地解决这种代码。