Java擦除和轉(zhuǎn)換實(shí)例分析
本文實(shí)例講述了Java擦除和轉(zhuǎn)換。分享給大家供大家參考,具體如下:
一 點(diǎn)睛
在嚴(yán)格的泛型代碼里,帶泛型聲明的類總應(yīng)該帶著類型參數(shù)。但為了與老的Java代碼保持一致,也允許在使用帶泛型聲明的類時(shí)不指定類型參數(shù)。如果沒(méi)有為這個(gè)泛型類指定類型參數(shù),則該類型參數(shù)被稱作一個(gè)raw type(原始類型),默認(rèn)是該聲明該參數(shù)時(shí)指定的第一個(gè)上限類型。
當(dāng)把一個(gè)具有泛型信息的對(duì)象賦給另一個(gè)沒(méi)有泛型信息的變量時(shí),則所有在尖括號(hào)之間的類型信息都被扔掉了。比如說(shuō)一個(gè)List<String>類型被轉(zhuǎn)換為L(zhǎng)ist,則該List對(duì)集合元素的類型檢查變成了成類型變量的上限(即Object),這種情況被為擦除。
二 實(shí)戰(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對(duì)象
Integer as = a.getSize();
// 把a(bǔ)對(duì)象賦給Apple變量,丟失尖括號(hào)里的類型信息
Apple b = a; // ②
// b只知道size的類型是Number
Number size1 = b.getSize();
// 下面代碼引起編譯錯(cuò)誤
//Integer size2 = b.getSize(); // ③
}
}
三 實(shí)戰(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)換”的警告,編譯、運(yùn)行時(shí)完全正常
List<String> ls = list; // ①
// 但只要訪問(wèn)ls里的元素,如下面代碼將引起運(yùn)行時(shí)異常。
//System.out.println(ls.get(0));
}
}
更多java相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java面向?qū)ο蟪绦蛟O(shè)計(jì)入門與進(jìn)階教程》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。
- Java 泛型總結(jié)(一):基本用法與類型擦除
- 詳解java 中泛型中的類型擦除和橋方法
- Java編程探索之泛型擦除實(shí)例解析
- 詳解Java類型擦除機(jī)制
- 簡(jiǎn)單理解java泛型的本質(zhì)(非類型擦除)
- java實(shí)現(xiàn)時(shí)間與字符串之間轉(zhuǎn)換
- 用Java將字符串的首字母轉(zhuǎn)換大小寫
- java list與數(shù)組之間的轉(zhuǎn)換詳細(xì)解析
- Java ArrayList 數(shù)組之間相互轉(zhuǎn)換
- Java中Date,Calendar,Timestamp的區(qū)別以及相互轉(zhuǎn)換與使用
相關(guān)文章
SpringBoot實(shí)現(xiàn)多數(shù)據(jù)源的切換實(shí)踐
java 獲取對(duì)象中為null的字段實(shí)例代碼
MyBatis 實(shí)現(xiàn)批量插入和刪除中雙層循環(huán)的寫法案例
Java數(shù)據(jù)類型分類與基本數(shù)據(jù)類型轉(zhuǎn)換
ObjectInputStream 和 ObjectOutputStream 介紹_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
Spring配置shiro時(shí)自定義Realm中屬性無(wú)法使用注解注入的解決辦法
Java多線程讀寫鎖ReentrantReadWriteLock類詳解

