Ümumi sinifdə istifadə olunan parametr növünü işləmə zamanı necə müəyyən etmək olar?
sobes.tech Süni İntellekt
AI-dan cavab
Java-da, tiplərin silinməsi (type erasure) səbəbindən, generik siniflərin parametr tipləri haqqında məlumatlar tərtib zamanı bytecode-da saxlanmır, ona görə də işləmə zamanı parametr tipini birbaşa müəyyən etmək mümkün deyil.
Ancaq, bu məlumatları əldə etmək üçün bir neçə üsul mövcuddur:
-
TypeTokensinfi və ya oxşar quruluşlardan istifadə etmək: Generik sinifin nümunəsini yaradarkən,Class<T>obyekti keçirmək və ya anonim alt sinif istifadə etmək vasitəsilə tip haqqında məlumatı saxlamaq olar. -
ParameterizedTypeistifadə edərək refleksiya: Əgər generik sinif, tip məlumatını sahə və ya konstruktor vasitəsilə saxlayırsa, onu refleksiya ilə əldə etmək mümkündür.
Class<T> ilə nümunə:
public class GenericClass<T> {
private Class<T> type;
public GenericClass(Class<T> type) {
this.type = type;
}
public void printType() {
System.out.println("Parametr tipi: " + type.getName());
}
}
GenericClass<String> instance = new GenericClass<>(String.class);
instance.printType(); // Çıxış: Parametr tipi: java.lang.String
Beləliklə, işləmə zamanı parametr tipini müəyyən etmək üçün adətən onu açıq şəkildə keçirmək və ya saxlamaq lazımdır, çünki Java-nın standart mexanizmləri bunu tip silinməsi (type erasure) səbəbindən əldə etməyə imkan vermir.