Java 泛型 - 类型擦除后的方法
Java Generics - method after type erasure
以下方法在应用类型擦除后会怎样?
static<T> void InsertAt0(List<T> mylist, T element) {
mylist.add(0, element);
}
T
会被Object
取代吗?或者类型擦除仅与泛型有关 类?
只需删除所有 <T>
,然后将任何 T
替换为 Object:
static void InsertAt0(List mylist, Object element) {
mylist.add(0, element);
}
请注意,上面的 mylist 已被删除为 raw type 等价物:List<T>
变为 List
。
如果您为 T 指定了一个通配符绑定,例如 <T extends Number>
,那么您可以将 T
替换为该绑定而不是 Object:
static void InsertAt0(List mylist, Number element) {
^^^^^^
以下方法在应用类型擦除后会怎样?
static<T> void InsertAt0(List<T> mylist, T element) {
mylist.add(0, element);
}
T
会被Object
取代吗?或者类型擦除仅与泛型有关 类?
只需删除所有 <T>
,然后将任何 T
替换为 Object:
static void InsertAt0(List mylist, Object element) {
mylist.add(0, element);
}
请注意,上面的 mylist 已被删除为 raw type 等价物:List<T>
变为 List
。
如果您为 T 指定了一个通配符绑定,例如 <T extends Number>
,那么您可以将 T
替换为该绑定而不是 Object:
static void InsertAt0(List mylist, Number element) {
^^^^^^