Sobes.tech
Middle+

Java-da tiplərin silinməsi nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Tür erasure (növün silinməsi) Java-da, növlər haqqında məlumatların tərtib zamanı silindiyi və tərtib edilmiş bayt kodunun generik parametrlər haqqında məlumat içermədiyi bir prosesdir.

Əsas nöqtələr:

  • Uyğunluq: Bu, generiklərin generik istifadə etməyən köhnə kod ilə işləməsinə imkan verir.
  • İcra: Tərtibçi parametrizə olunmuş növləri onların yuxarı sərhədinə (adətən Object) dəyişdirir və lazım olan növ çevirmələrini əlavə edir.
  • Məhdudiyyətlər:
    • Primitiv növlər generik parametrlər kimi istifadə oluna bilməz (məsələn, List<int>).
    • Parametrizə olunmuş növün massivini yaratmaq mümkün deyil (məsələn, new List<String>[10]).
    • instanceof operatorundan parametrizə olunmuş növü yoxlamaq üçün istifadə etmək mümkün deyil (məsələn, if (list instanceof List<String>)).
    • Əgər onların imzaları eynidirsə, metodlar overload edilə bilməz.

Nümunə:

// Generiklərlə mənbə kodu
List<String> stringList = new ArrayList<>();
stringList.add("hello");
String s = stringList.get(0); // Aydın çevirməyə ehtiyac yoxdur

// Növ silindikdən sonra bayt kodu
List list = new ArrayList(); // Tip List<String> List-ə dəyişdirilib
list.add("hello");
String s = (String)list.get(0); // İmplicit çevirmə əlavə olunub

Məhdudiyyətlərə baxmayaraq, növ silinməsi Java-da generiklərin həyata keçirilməsinin əsas aspektidir və geriyə uyğunluğu təmin edir.