Sobes.tech
Middle+

Ինչ է Java-ում տիպերի ջնջումը։

sobes.tech AI

Պատասխան AI-ից

Տիպերի ջնջում (type erasure) — դա գործընթաց է Java-ում, երբ տիպերի մասին տեղեկատվությունը ջնջվում է կոմպիլյացիայի ժամանակ, և կոմպիլյացված բայթկոդը չի պարունակում գեներիկ պարամետրերի մասին տեղեկատվություն:

Հիմնական կետեր՝

  • Համատեղելիություն: Իջեցնում է գեներիկների գործածելիությունը հին կոդի հետ, որը գեներիկներ չի օգտագործում:
  • Իմպլեմենտացիա: Կոմպիլյատորը փոխարինում է պարամետրավորված տիպերը նրանց վերին սահմանով (հաճախ Object) և ավելացնում անհրաժեշտ տիպի փոխարկումները:
  • Համակարգեր:
    • Չի կարելի օգտագործել primitív տիպեր որպես գեներիկ պարամետրեր (օրինակ, List<int>):
    • Չի կարելի ստեղծել պարամետրավորված տիպի զանգված (օրինակ, new List<String>[10]):
    • Չի կարելի օգտագործել instanceof օպերատորը պարամետրավորված տիպի ստուգման համար (օրինակ, if (list instanceof List<String>)):
    • Չի կարելի ավելորդ բեռնել մեթոդներ պարամետրավորված տիպերով, եթե նրանց ստորագրությունները համընկնում են:

Օրինակ՝

// Գնահատման կոդ պարամետրերով
List<String> stringList = new ArrayList<>();
stringList.add("hello");
String s = stringList.get(0); // Չի պահանջվում բացատրական փոխարկում

// Տիպերի ջնջումից հետո բայթկոդ
List list = new ArrayList(); // Տիպ `List<String>` փոխարինվել է `List`
list.add("hello");
String s = (String)list.get(0); // Անհայտ փոխարկում ավելացվել է

Չնայած սահմանափակումներին, տիպերի ջնջումը կարևոր բաղադրիչ է Java-ում գեներիկների իրականացման համար, ապահովելով հետադարձ համատեղելիություն։