2010-03-23 12 views
5

Bazı eski Java kodlarında (Eclipse'de) bazı uyarıları temizlemeye çalışıyorum ve bu durumda yapılması gereken şeyin ne olduğundan emin değilim. o şikayet, Liste ben <File> ile parameterize eğer eminim ki, ancak, parametreli olmadığı için bir uyarı oluştururEclipse uyarısını çözmenin uygun yolu "parametrelendirilmedi"?

Transferable content = getToolkit().getSystemClipboard().getContents(null); 
java.util.List clipboardFileList = null; 

if(content.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) { 
    try { 
    clipboardFileList = (java.util.List)content.getTransferData(
     DataFlavor.javaFileListFlavor); 
    } 
    /* Do other crap, etc. */ 
} 

o gereği budur: blok aşağı yukarı şuna benzer Object'dan List<File>'a dönüştürülemez. Sadece fonksiyon için kontrol edilmemiş uyarıyı bastırabilirdim, fakat eğer “iyi” bir çözüm varsa bundan kaçınmayı tercih ederim. Düşünceler?

+0

Yani getTransferData() bir Nesne döndürüyor mu? –

+0

Whoops, içeriğin ne olduğunu söyleyen çizgiyi dışarıda bıraktı. – Morinar

cevap

6

açıkça List<File> sonucu döküm ve uyarı bastırmayı tavsiye ederim. the documentation göre:

public static final DataFlavor javaFileListFlavor

bu tip/alt tipi ve java.util.List temsili sınıfının DataFlavor kullanılır Java (ve altta yatan platformdan) den/dosyaların bir listesini aktarmak için. Listenin her öğesinin, java.io.File türünde olması/olması garanti edilir. dokümantasyon açıkça Joshua Bloch'ın Effective Java (sayfa 116) maddesine 24 uyarınca veri türü, uyarıları görmezden çekinmeyin tanımlayan Böyle bir durumda

:

Eğer bunu yapamazsınız Bir uyarıyı ortadan kaldırır ve uyarıyı uyandırıcı kodun türler olduğunu kanıtlayabilir ve ardından (ve ancak o zaman) uyarıyı bir @SuppressWarnings("unchecked") ek açıklamasıyla bastırırsınız.

+0

Bu bana ve yöneldiğim yöne bir anlam ifade ediyor. Sadece "daha iyi" bir çözüm varsa merak ediyorum. – Morinar

+0

@Morinar: Anlaşılabilir. Cevabın amacı, kararınızın arkasında bir uzman (Joshua Bloch's) gerekçesi sunmaktı. :) –

4

Sana <?> kullanmak zorunda sanmıyorum bu

java.util.List<?> 
+0

Bu hile yapmak gibi görünüyor. Sadece bunun ne olduğunu bilmediğimi mi söylüyorsun? Yoksa bundan daha karmaşık mı? – Morinar

+2

@Morinar, biraz daha fazlasını yapar: listenin bilinmeyen belirli bir tür olduğunu söyler - ham türü ise farklı türden elemanlar içerebilen bir listedir (ve bu nedenle güvenli değildir). –

0

deneyin. Bu benim için iyi çalışıyor mu?

Object obj = null; 
List<File> aa = (List<File>)obj; 
+0

Üzgünüm, net değildim. Bunu yapamayacağı değil, Nesneden Listeye 'un Denetlenmemiş bir Dökümü. – Morinar

+0

Oh. Üzgünüz, IDEA kullanıyorum ve herhangi bir uyarı vermedi. –

İlgili konular