SORU
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ş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • isupportthegosselins

    isupporttheg

    6 Aralık 2009
  • soyacincautv

    soyacincautv

    14 NİSAN 2010
  • wwjoshdu

    wwjoshdu

    18 ŞUBAT 2011