Genel bir sınıfta kullanılan parametre türü çalışma zamanında nasıl belirlenir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Java'da, türlerin silinmesi (type erasure) nedeniyle, jenerik sınıfların parametre türleri hakkında bilgi derleme sırasında bytecode'da saklanmaz, bu yüzden çalışma zamanında parametre türünü doğrudan belirlemek mümkün değildir.
Ancak, bu bilgiyi almak için birkaç yöntem vardır:
-
TypeTokensınıfını veya benzer yapıları kullanmak: Jenerik bir sınıfın örneğini oluştururken,Class<T>nesnesi geçirebilir veya tür bilgisi korunmak için anonim bir alt sınıf kullanabilirsiniz. -
ParameterizedTypekullanarak yansıma (reflection): Eğer jenerik sınıf, tür bilgisini bir alan veya yapıcıda saklıyorsa, yansıma yoluyla erişebilirsiniz.
Class<T> ile örnek:
public class GenericClass<T> {
private Class<T> type;
public GenericClass(Class<T> type) {
this.type = type;
}
public void printType() {
System.out.println("Parametre türü: " + type.getName());
}
}
GenericClass<String> instance = new GenericClass<>(String.class);
instance.printType(); // Çıktı: Parametre türü: java.lang.String
Bu nedenle, çalışma zamanında parametre türünü belirlemek için genellikle bunu açıkça iletmek veya saklamak gerekir, çünkü Java'nın standart mekanizmaları, türlerin silinmesi nedeniyle bunu elde etmeye izin vermez.