class a{}
class b extends a{}
class c <? extends b> extends b{}
public class d {
public static void main(String[] args) {
c<c> n = new c<c>();
}
}
我正在读SCJP。我没有得到class<?>
和class<? extends anything>
的泛型类的概念.....如果这意味着我们可以传递任何扩展“任何”的类,那么为什么上面的代码不起作用?
请解释一下,这非常令人困惑
此致
答案 0 :(得分:2)
在没有引用该参数的情况下声明具有类型参数的类是没有意义的。因此,没有预见到宣布这样的课程。您必须为type参数指定名称。
更改
class c <? extends b> extends b{}
到
class c <T extends b> extends b{}
在课程c
中,您现在可以引用类型参数T
,例如声明方法和变量。
答案 1 :(得分:2)
您没有提供确切的错误消息,但我猜您在定义类型参数时不能使用通配符。
尝试:
class c <T extends b> extends b{}
注意:使用大写字母启动类名是一种惯例,因此请使用:
class C <T extends B> extends B{}