java 擦出,Java擦除和转换实例分析
本文實例講述了Java擦除和轉(zhuǎn)換。分享給大家供大家參考,具體如下:
一 點睛
在嚴格的泛型代碼里,帶泛型聲明的類總應(yīng)該帶著類型參數(shù)。但為了與老的Java代碼保持一致,也允許在使用帶泛型聲明的類時不指定類型參數(shù)。如果沒有為這個泛型類指定類型參數(shù),則該類型參數(shù)被稱作一個raw type(原始類型),默認是該聲明該參數(shù)時指定的第一個上限類型。
當把一個具有泛型信息的對象賦給另一個沒有泛型信息的變量時,則所有在尖括號之間的類型信息都被扔掉了。比如說一個List類型被轉(zhuǎn)換為List,則該List對集合元素的類型檢查變成了成類型變量的上限(即Object),這種情況被為擦除。
二 實戰(zhàn)——擦除
class Apple
{
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 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 li = new ArrayList<>();
li.add(6);
li.add(9);
List list = li;
// 下面代碼引起“未經(jīng)檢查的轉(zhuǎn)換”的警告,編譯、運行時完全正常
List ls = list; // ①
// 但只要訪問ls里的元素,如下面代碼將引起運行時異常。
//System.out.println(ls.get(0));
}
}
希望本文所述對大家java程序設(shè)計有所幫助。
總結(jié)
以上是生活随笔為你收集整理的java 擦出,Java擦除和转换实例分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php自动转换和强制转换,Java数据类
- 下一篇: 免费SSL证书(支持1.0、1.1、1.