2010-10-06 167 views
1

簡單的Java泛型問題:我有兩個類 - 其中一個使用泛型來定義其類型,另一個擴展此類提供具體類型。泛型 - 向泛型提供具體類型時的類型不匹配

public class Box<Item> { 
    ... 
} 


public class Toolbox extends Box<Tool>{ 
    ... 
} 

鑑於工具箱擴展盒提供了一個工具的實際類型的通用佔位符,我本來以爲應該可以做這樣的事情:

Box<Tool> box = new Box(); 

Toolbox toolbox = box; 

但是,看來這導致類型不匹配。爲什麼是這樣?

回答

0

Box<Item>是未綁定的泛型類型。 Box<Tool>是同一泛型類型的特定綁定版本。 ToolboxBox<Tool>的一個子類,因此是Box<Tool>的離散類型。

6

這不是一個真正的泛型問題。你的問題是你將一個不太特定類型的對象分配給一個更具體類型的變量。

你最好有同樣的問題,如果你試圖將對象分配給一個字符串變量,即使字符串擴展對象。

你應該,但是,能寫Box<Tool> box = new Toolbox();給定的類結構。而不是相反。

+0

當然。乾杯......今天有一點金髮的時刻;) – 2010-10-06 15:28:35