2013-06-28 49 views
0

我試圖創建一個GWT應用程序下面的結構,雖然這確實是一個Java問題:爪哇 - 力實現的接口來擴展類

  1. ChatComponent是一個標記接口,在它沒有方法;它旨在標記可包含ChatMessage的組件。
  2. 所有聊天組件都是小部件,但不知道究竟是什麼類型;我想允許聊天組件擴展他們想要的任何內容。
  3. 但是,我還希望所有聊天組件都是Widget的一些擴展,並將其反映在代碼中。

基本上我想要的是能夠說

List<Widget> list = new ArrayList<>(); 
list.add(new ChatComponent()); 

現在,這裏的問題是顯而易見的,接口不能擴展類,我不能使用抽象類,因爲我想要的組件類能夠擴展他們想要的任何東西;所以我不能在摘要中將Widget分類,然後再擴展它。

有沒有一個乾淨的方式來做到這一點?如果它不能在類層次結構中完成,但只能使用泛型和通配符方法完成,那也適用於我,但我無法真正想出一個可行的方法。

+0

如果ChatComponent是一個接口,你將無法使用新的代碼ChatComponent() – aglassman

回答

0

它可能會使用通用通配符。創建一個ChatComponent接口。

List<? extends ChatComponent> list = new ArrayList<>(); 
list.add(new MyChatComponent()); 

MyChatComponent.class應該是一個Widget並實現ChatComponent接口。

+1

很遺憾,這是行不通的,你根本無法像通配符那樣添加到列表中。 – Marconius

+0

嗯,你是對的!我一直認爲這是行得通的,我想我沒有用列表試過。 – aglassman