天天看點

java 泛型中 T 和 問号(通配符)的差別

類型本來有:簡單類型和複雜類型,引入泛型後把複雜類型分的更細了;

現在List&lt;Object&gt;, List&lt;String&gt;是<code>兩種不同的類型</code>;且<code>無繼承</code>關系;

泛型的好處如:

開始版本

泛型版本

簡便了代碼

1.定義在類後面

緊跟<code>類名</code>後面

定義泛型 T, S, 且S 繼承 T

2.定義在方法<code>裝飾符</code>後面

緊跟<code>修飾符</code>後面(public)

1.執行個體化<code>定義在類</code>上的泛型

第一聲明<code>類變量</code>或者<code>執行個體化時</code>。例如

第二<code>繼承類</code>或者<code>實作接口</code>時。例如

2.執行個體化<code>定義方法</code>上的泛型&lt;br/&gt;

當調用範型方法時,編譯器自動對<code>類型參數(泛型)</code>進行指派,當不能成功指派時報編譯錯誤

上面有泛型的<code>定義</code>和<code>指派</code>;當在<code>指派</code>的時候,上面一節說指派的都是為<code>具體類型</code>,當指派的類型<code>不确定</code>的時候,我們用<code>通配符(?)</code>代替了:

在Java集合架構中,對于參數值是<code>未知類型</code>的容器類,<code>隻能</code>讀取其中元素,<code>不能</code>向其中添加元素, 因為,其類型是未知,是以編譯器無法識别添加元素的類型和容器的類型是否相容,唯一的例外是NULL