使用泛型java的类声明

时间:2014-02-11 13:43:25

标签: java generics scjp

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>的泛型类的概念.....如果这意味着我们可以传递任何扩展“任何”的类,那么为什么上面的代码不起作用?

请解释一下,这非常令人困惑

此致

2 个答案:

答案 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{}