2011-03-23 22 views
41

Bu, uyarıyı aldığım örnek kodum. Bu uyarıyı aldım: son parametre için geçersiz argüman türüne sahip varargs yönteminin varargs yöntemiyle çağrılması;

Class aClass = Class.forName(impl); 
Method method = aClass.getMethod("getInstance", null); 
item = (PreferenceItem) method.invoke(null, null); 

uyarı:

uyarı: son parametre için hatalı görüş türü ile varargs yöntemin olmayan varargs çağrı; java.lang.Coll'a bir varargs çağrısı için bir varargs çağrısı için java.lang.Class [] 'a bas ve bu uyarıyı bastırmak için Yöntem yöntemi = aClass.getMethod ("getInstance", null);

beni bu sorunu

cevap

66

Kuyusu çözmeye yardımcı lütfen, derleyici uyarısı bilmeniz gereken her şeyi söyler. null'un Class<?>[] olarak doğrudan getMethod'a veya yeni Class<?>[] dizisine tek bir null girişine geçip geçmeyeceğini bilmez. Sana eski davranış istediğiniz şüpheli, bu nedenle döküm nullClass<?>[] için:

Method method = aClass.getMethod("getInstance", (Class<?>[]) null); 

tek boş elemanı ile Class<?>[] oluşturmak için istese, Class<?> bunu savururdum:

Method method = aClass.getMethod("getInstance", (Class<?>) null); 

Alternatif olarak, bağımsız değişkeni tamamen kaldırabilirsiniz ve derleyicinin boş bir dizi oluşturmasına izin verebilirsiniz:

Method method = aClass.getMethod("getInstance"); 
+0

Teşekkürler n ................................................................................................................................ – Mohsin

+0

Eğer birisi benim gibi merak ediyorduysa, dizinin içinde tek bir boş eleman değil, yani en azından burada yayınlanan cevaplara göre: [] 'null dizisi olarak null olarak davranmak varsayılan gibi görünüyor: http: // stackoverflow.com/questions/4028059/calling-java-varargs-method-with-single-null-argument). Tabii ki, özgüllük için muhtemelen en iyi yöntemdir, ama son argüman olarak varargs olarak bir Array alan yöntemleri yeniden düzenlemeyi düşünürken bilmek iyidir. –

+0

JLS, bu örnekte, " Sınıfına" bir dökümün tek bir "null" öğesine sahip bir dizi üreteceği gerçeğinin mantığıdır. –

İlgili konular