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]). instanceofoperatorundan 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.
- Primitiv növlər generik parametrlər kimi istifadə oluna bilməz (məsələn,
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.