Son zamanlarda yansıma ile çok şey yapıyorum ve bu küçük yardımcı programı uyguladı. İlk versiyonun derlenmediğini, ancak ikincisinin bunu bulduğuna şaşırdım.Şaşırtıcı derleme hatası Bir sınıfın sınıfını almak
derlemek yok:
public static <T> Class<T[]> getArrayClassOfType(Class<T> componentType) {
return Array.newInstance(componentType, 0).getClass();
}
derler ve gayet güzel çalışıyor:
public static <T> Class<T[]> getArrayClassOfType(Class<T> componentType) {
Class c = Array.newInstance(componentType, 0).getClass();
return c;
}
İki soru: yanlış olan ne? Bunu yapmanın daha iyi bir yolu var mı?
TypeUtils.java:[12,60] incompatible types: java.lang.Class<capture#1 of ? extends java.lang.Object> cannot be converted to java.lang.Class<T[]>
Ah. Bunu denedim, ama intellij bastırma uyarılarıyla bile hala üzgündü (reddedilemez türler hakkında kırmızı çizili). Bir hata buldum gibi görünüyor. – RutledgePaulV
Oyuncunuz varsa, Tamam. Belki de bu tür uyarıları hata olarak ele alacak şekilde yapılandırılmış IDE'niz var mı? Bunu Eclipse'de yapabileceğinizi biliyorum. – MightyPork
Hm, bu tür bir hata seviyesini ayarlamanın yollarını aradım ama bulamadım. Ayrıca, jetbeyinlerin daha önce bir hata olarak bunun gibi bir durumu (burada http://youtrack.jetbrains.com/issue/IDEA-105846) düzeltdiğini görüyorum, bu yüzden sunacağım. – RutledgePaulV