2011-05-25 79 views
1

反正是有,我可以做这样的事情:的Java扩展一般指定类型

Class extends <T extends ClassB> 

你能有一个类,只要该类能够扩展类的一般指定的类必须扩展扩展一个类?

它的语法/结构是什么?

+0

只是好奇:你真的想完成什么?你能描述一下,如果它确实存在,你将如何或为什么使用这种能力? – 2011-05-25 04:34:15

+0

我正在尝试做一点MVC类结构,我希望基类View类继承Container方法和属性。但是在扩展类中,我希望类可以通过JFrame进行扩展。 – 2011-05-25 05:09:21

回答

3

不,这是不可能的。我认为当你使用泛型并以这种方式指定一个类时,—也不会有多大意义,只有你指定类中的信息。

对于正常使用(例如容器),这是有道理的,因为它可以让您依赖特定的类或接口的方法,同时能够确保附加的类型安全。但是,延伸一类,这不会有多大意义—因为你只能依靠ClassB的方法,它将功能上相同,只是做Class extend ClassB

为了让你的想法变得更有意义,你需要能够接受你定义的类并传入一个类型来“扩展”。但是,这会有许多与多重继承相同的缺陷—如果在您传递给泛型的类中定义了Class中第一个定义的方法,但是您没有在ClassB中定义该方法,那么将如何处理?在Java中没有多重继承是一个设计决定,而像这样工作的泛型会违背这一点。

总之,这样的事情要么像多重继承,要么与正常继承相同。

+0

其实ClassB是一个Container,我希望能够访问基类中的Container方法并访问子类中的子类型方法。 – 2011-05-25 05:06:42

2

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

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