java泛型程序设计——注意擦除后的冲突
生活随笔
收集整理的這篇文章主要介紹了
java泛型程序设计——注意擦除后的冲突
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【0】README
0.1) 本文描述+源代碼均 轉自 core java volume 1, 旨在理解 java泛型程序設計 的 注意擦除后的沖突 的知識;
1.1)當泛型類型被 擦除時, 無法創建引發沖突的條件。
- 1.1.1)看個荔枝:
- 1.1.2)考慮一個 Pair《String》, 從概念上講, 它有兩個 equals 方法:
- 1.1.3)方法擦除 boolean equals(T) 就是 boolean equals(Object) 與 Object.equals 發生沖突;
- 1.1.4)補救方法是, 重新命名引發錯誤的方法;
1.2)泛型規范說明還提供另一個原則: 要想支持擦除的轉換, 就需要強行限制一個類或類型變量不能同時成為兩個接口類型的子類,而這兩個接口是同一個接口的不同參數化。
- 1.2.1)看個荔枝:(如下面的代碼是非法的)
- 之所以錯誤: 是因為 GregorianCalendar 會實現 Comparable 和 Comparable《GregorianCalendar》, 這是同一接口的不同參數化;
- 1.2.2)這一限制與 類型擦除的關系并不明確。 因為, 下列非泛型版本是合法的:
- 其原因非常微妙, 有可能與 合成的 橋方法產生沖突;
- 1.2.3)實現了 Comparable 的類可以獲得一個 橋方法:
- 對于不同類型的X 不能有兩個這樣的方法;
總結
以上是生活随笔為你收集整理的java泛型程序设计——注意擦除后的冲突的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 石楠花什么味道(为什么味道难闻还是要种植
- 下一篇: gps测量仪与电脑软件(GPS测量软件)