2 Mart 2009, PAZARTESİ
İterable Nasıl Java:
Aşağıdaki kodu göz önüne alındığında, ne tür ProfileCollection bir nesne üzerinde yineleme yapabilir miyim?
public class ProfileCollection implements Iterable {
private ArrayList<Profile> m_Profiles;
public Iterator<Profile> iterator() {
Iterator<Profile> iprof = m_Profiles.iterator();
return iprof;
}
...
public Profile GetActiveProfile() {
return (Profile)m_Profiles.get(m_ActiveProfile);
}
}
public static void main(String[] args) {
m_PC = new ProfileCollection("profiles.xml");
// properly outputs a profile:
System.out.println(m_PC.GetActiveProfile());
// not actually outputting any profiles:
for(Iterator i = m_PC.iterator();i.hasNext();) {
System.out.println(i.next());
}
// how I actually want this to work, but won't even compile:
for(Profile prof: m_PC) {
System.out.println(prof);
}
}
CEVAP
2 Mart 2009, PAZARTESİ
İterable genel bir arayüz. Bir sorun olabilir sahip çıkmadın aslında " sorun yaşadığınız için, Eğer herhangi bir) kullanıyorsanız, genel arayüz/sınıf belirtmeden türü bağımsız değişken(ler) silmek türleri ilgisiz genel türler içinde sınıf. Bunun bir örneği Non-generic reference to generic class results in non-generic return types.
En azından bir değişiklik olur.
public class ProfileCollection implements Iterable<Profile> {
private ArrayList<Profile> m_Profiles;
public Iterator<Profile> iterator() {
Iterator<Profile> iprof = m_Profiles.iterator();
return iprof;
}
...
public Profile GetActiveProfile() {
return (Profile)m_Profiles.get(m_ActiveProfile);
}
}
ve bu çalışması gerekir:
for (Profile profile : m_PC) {
// do stuff
}
Bu tür İterable üzerinde tartışma olmadan, yineleyici, bu iş bu kadar tek tip Nesne olmak için azaltılmış olabilir:
for (Object profile : m_PC) {
// do stuff
}
Bu Java jenerik pek bilinmeyen bir köşesinde bir durumdur.
Eğer değilse, ne hakkında biraz daha bilgi veriniz.
Bunu Paylaş:
Nasıl JSP dosyaları Java kod önlemek i...
Nasıl Java başka bir kurucu arayayım m...
Bir Harita nasıl sıralama<Key, Valu...
Nasıl Java iki dizi bir arada olabilir...
Nasıl bir dosyanın içeriğini bir Java ...