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-ում գեներիկների իրականացման համար, ապահովելով հետադարձ համատեղելիություն։