我是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{
}
答案 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;正确地解决这种代码。