反正是有,我可以做這樣的事情:的Java擴展一般指定類型
Class extends <T extends ClassB>
你能有一個類,只要該類能夠擴展類的一般指定的類必須擴展擴展一個類?
它的語法/結構是什麼?
反正是有,我可以做這樣的事情:的Java擴展一般指定類型
Class extends <T extends ClassB>
你能有一個類,只要該類能夠擴展類的一般指定的類必須擴展擴展一個類?
它的語法/結構是什麼?
不,這是不可能的。我認爲當你使用泛型並以這種方式指定一個類時,—也不會有多大意義,只有你指定類中的信息。
對於正常使用(例如容器),這是有道理的,因爲它可以讓您依賴特定的類或接口的方法,同時能夠確保附加的類型安全。但是,延伸一類,這不會有多大意義—因爲你只能依靠ClassB
的方法,它將功能上相同,只是做Class extend ClassB
。
爲了讓你的想法變得更有意義,你需要能夠接受你定義的類並傳入一個類型來「擴展」。但是,這會有許多與多重繼承相同的缺陷—如果在您傳遞給泛型的類中定義了Class
中第一個定義的方法,但是您沒有在ClassB
中定義該方法,那麼將如何處理?在Java中沒有多重繼承是一個設計決定,而像這樣工作的泛型會違背這一點。
總之,這樣的事情要麼像多重繼承,要麼與正常繼承相同。
其實ClassB是一個Container,我希望能夠訪問基類中的Container方法並訪問子類中的子類型方法。 – 2011-05-25 05:06:42
我認爲,由於類型擦除,你將無法做到這一點。例如,你甚至不能這樣做:
class A<T> {
class B extends T {
}
}
只是好奇:你真的想完成什麼?你能描述一下,如果它確實存在,你將如何或爲什麼使用這種能力? – 2011-05-25 04:34:15
我正在嘗試做一點MVC類結構,我希望基類View類繼承Container方法和屬性。但是在擴展類中,我希望類可以通過JFrame進行擴展。 – 2011-05-25 05:09:21