Java扩展了一般指定的类型

时间:2011-05-25 04:13:34

标签: java generics

无论如何,我可以做这样的事情:

Class extends <T extends ClassB>

只要该类扩展了通常指定的类必须扩展的类,您是否可以扩展类?

它的语法/结构是什么?

2 个答案:

答案 0 :(得分:3)

不,那是不可能的。我认为这也没有多大意义 - 当您使用泛型并以这种方式指定类时,您只能获得您指定的类中的信息。

对于正常使用(例如容器),这是有道理的,因为它允许您依赖特定的类或接口的方法,同时能够确保额外的类型安全性。但是,对于扩展一个类,这实际上没有多大意义 - 因为你只能依赖ClassB的方法,它在功能上与仅仅Class extend ClassB相同

为了让你的想法更有意义,你需要能够获得你定义的类并传入一个类型来“扩展”。但是,这会产生许多与多重继承相同的缺陷 - 如果在Class中首次定义的方法也在您传递给泛型的类中定义,而不是在ClassB中,则会怎么做? ?在Java中没有多重继承是一个设计决策,并且具有类似工作的泛型将违背。

简而言之,像这样的东西要么像多重继承,要么与普通继承相同。

答案 1 :(得分:2)

我认为由于类型擦除,你将无法做到这一点。例如,你甚至不能这样做:

class A<T> {
    class B extends T {
    }
}