Princípio de implementação genérico: apagamento de tipo

Tipo apagamento

O que é apagamento de tipo?
Os parâmetros de tipo existem apenas no momento da compilação.No tempo de execução, a máquina virtual Java não sabe sobre a existência de genéricos.

Exemplos:

import java.util.ArrayList;

public class ErasedTypeTest {
    public static void main(String[] args) {
        Class c1 = new ArrayList<String>().getClass();
        Class c2 = new ArrayList<Integer>().getClass();
        System.out.println(c1 == c2);//true,这里并不知道类ArrayList<String>和ArrayList<Integer>,只知道ArrayList
    }
}

Efeitos do apagamento do tipo:

Referência:
https://segmentfault.com/a/1190000020382440
https://segmentfault.com/a/1190000005179142

  • Tipos genéricos não podem ser usados ​​como sobrecargas de método
public void testMethod(List<Integer> array) {}
public void testMethod(List<Double> array) {}    // compile error
  • Tipos genéricos não podem ser usados ​​como tipos reais
static <T> void genericMethod(T t) {
  T newInstance = new T();              // compile errror
  Class c = T.class;                    // compile errror
  List<T> list = new ArrayList<T>();    // compile errror
  if (list instance List<Integer>) {}   // compile errror
}

Acho que você gosta

Origin www.cnblogs.com/JohnTeslaaa/p/12706786.html
Recomendado
Clasificación