使用泛型 Java 的类声明


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

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

问候

使用类型参数声明一个类而不引用该参数是没有意义的。因此,预计不会声明这样的类。必须为类型参数命名。

改变

class c <? extends b> extends b{}

class c <T extends b> extends b{}

在类c中,您现在可以引用类型参数T,例如声明方法和变量。

您没有给出确切的错误消息,但我想这是关于在定义类型参数时不能使用通配符。

尝试:

class c <T extends b> extends b{}
注意:类

名以大写字母开头是一种惯例,因此请使用:

class C <T extends B> extends B{}

最新更新