Java擦除和轉(zhuǎn)換實例分析
本文實例講述了Java擦除和轉(zhuǎn)換。分享給大家供大家參考,具體如下:
一 點睛
在嚴(yán)格的泛型代碼里,帶泛型聲明的類總應(yīng)該帶著類型參數(shù)。但為了與老的Java代碼保持一致,也允許在使用帶泛型聲明的類時不指定類型參數(shù)。如果沒有為這個泛型類指定類型參數(shù),則該類型參數(shù)被稱作一個raw type(原始類型),默認(rèn)是該聲明該參數(shù)時指定的第一個上限類型。
當(dāng)把一個具有泛型信息的對象賦給另一個沒有泛型信息的變量時,則所有在尖括號之間的類型信息都被扔掉了。比如說一個List<String>類型被轉(zhuǎn)換為List,則該List對集合元素的類型檢查變成了成類型變量的上限(即Object),這種情況被為擦除。
二 實戰(zhàn)——擦除
class Apple<T extends Number>
{
T size;
public Apple()
{
}
public Apple(T size)
{
this.size = size;
}
public void setSize(T size)
{
this.size = size;
}
public T getSize()
{
return this.size;
}
}
public class ErasureTest
{
public static void main(String[] args)
{
Apple<Integer> a = new Apple<>(6); // ①
// a的getSize方法返回Integer對象
Integer as = a.getSize();
// 把a對象賦給Apple變量,丟失尖括號里的類型信息
Apple b = a; // ②
// b只知道size的類型是Number
Number size1 = b.getSize();
// 下面代碼引起編譯錯誤
//Integer size2 = b.getSize(); // ③
}
}
三 實戰(zhàn)——擦除與轉(zhuǎn)換
import java.util.*;
public class ErasureTest2
{
public static void main(String[] args)
{
List<Integer> li = new ArrayList<>();
li.add(6);
li.add(9);
List list = li;
// 下面代碼引起“未經(jīng)檢查的轉(zhuǎn)換”的警告,編譯、運行時完全正常
List<String> ls = list; // ①
// 但只要訪問ls里的元素,如下面代碼將引起運行時異常。
//System.out.println(ls.get(0));
}
}
更多java相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java面向?qū)ο蟪绦蛟O(shè)計入門與進(jìn)階教程》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對大家java程序設(shè)計有所幫助。
相關(guān)文章
SpringBoot定制JSON響應(yīng)數(shù)據(jù)返回的示例代碼
@JsonView 是 Jackson 庫中的一個注解,它允許你定義哪些屬性應(yīng)該被序列化到 JSON 中,基于不同的“視圖”或“配置”,在本文中,通過了解@JsonView,你將能夠更好地掌握如何在Spring Boot應(yīng)用中定制JSON數(shù)據(jù)的輸出,需要的朋友可以參考下2024-05-05
SMBMS超市訂單管理系統(tǒng)的網(wǎng)站源碼
這篇文章主要介紹了SMBMS超市訂單管理系統(tǒng),本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-05-05
java使用MulticastSocket實現(xiàn)基于廣播的多人聊天室
這篇文章主要為大家詳細(xì)介紹了java使用MulticastSocket實現(xiàn)基于廣播的多人聊天室,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-01-01
java實現(xiàn)批量下載 多文件打包成zip格式下載
這篇文章主要為大家詳細(xì)介紹了java實現(xiàn)批量下載、將多文件打包成zip格式下載,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-07-07
java實現(xiàn)基于TCP協(xié)議網(wǎng)絡(luò)socket編程(C/S通信)
這篇文章主要介紹了java實現(xiàn)基于TCP協(xié)議網(wǎng)絡(luò)socket編程(C/S通信),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10

