Sobes.tech
Middle+

Kas yra tipų ištrynimas Java?

sobes.tech AI

Atsakymas iš AI

Tipų ištrynimas (type erasure) yra procesas Java kalboje, kai tipų informacija ištrinama kompiliacijos metu, ir kompiliuotas baitkodas neapima informacijos apie generinius parametrus.

Svarbiausi punktai:

  • Suderinamumas: Leidžia generikams dirbti su senesniu kodu, kuris nenaudoja generikų.
  • Įgyvendinimas: Kompiliatorius pakeičia parametrizuotus tipus jų viršutinės ribos (dažniausiai Object) ir įterpia reikalingas tipų konversijas.
  • Apribojimai:
    • Primitivūs tipai negali būti naudojami kaip generinių parametrų (pvz., List<int>).
    • Negalima kurti parametrizuoto tipo masyvo (pvz., new List<String>[10]).
    • instanceof operatorius negali būti naudojamas parametrizuoto tipo patikrinimui (pvz., if (list instanceof List<String>)).
    • Metodų perkripimas pagal parametrizuotus tipus nėra įmanomas, jei jų parašai po ištrynimo sutampa.

Pavyzdys:

// Šaltinio kodas su generikais
List<String> stringList = new ArrayList<>();
stringList.add("hello");
String s = stringList.get(0); // Nereikia aiškaus konvertavimo

// Baitkodas po tipų ištrynimo
List list = new ArrayList(); // Tipas `List<String>` pakeistas į `List`
list.add("hello");
String s = (String)list.get(0); // Įterptas neaiškus konvertavimas

Nepaisant apribojimų, tipų ištrynimas yra svarbus aspektas Java generikų įgyvendinime, užtikrinantis atgalinį suderinamumą.