[英]Java Generics- type erasure?
如果我有一個擴展MySuperClass的子類,並且有以下通用類:
public class GenericClass<M extends MySuperClass>{
public void aMethod(M m);
}
public class SubClass1 extends MySuperClass{}
然后我做:
SubClass1 sc1 = new SubClass1();
GenericClass<MySuperClass> msc = new GenericClass<MySuperClass>();
msc.aMethod(sc1);
類型擦除是確定參數化類型是否合法的嗎? 我認為編譯器可以查看M extends MySuperClass
,查看並確定其合法性-但我不確定類型擦除是否可以解決此問題?
類型擦除是指在編譯后刪除了通用類型參數和實例化的事實。 編譯器在編譯時檢查類型,然后刪除所有類型參數。
類型安全是由編譯器確保的。 類型擦除的唯一工作是擦除泛型部分,以使代碼向后兼容在Java中出現泛型之前編寫的遺留代碼。 因此,在刪除操作生效之前,由編譯器確保您的代碼在語法上正確無誤,無論它是否與泛型相關。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.