簡體   English   中英

為什么Java中的數組不能使用類型擦除?

[英]Why doesn't type erasure work with arrays in Java?

我注意到我們無法在Java中創建通用類型的數組,如下所示:

public class ExampleClass<G> {
  private G[] genericArray = new G[arraySize];
}

我已經讀到這是由於Java使用類型擦除來處理泛型的方式。 我對類型擦除的理解是,泛型僅被最特定的超類容器替換-因此,如果我們不提供綁定,則G每個實例都將被Object替換。

為什么不能使用創建Object類型數組的數組來完成此操作?

如果允許這樣做,並且G被擦除為Object ,那么以下操作將無效:

ExampleClass<String> foo = new ExampleClass<>();
String[] array = foo.genericArray;

因為genericArray將是一個Object[] ,而不是String[]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM