2016-03-31 9 views
0

Bağlantı sınıfını alan bir koleksiyona geri dönmem gerekiyor, ancak "sembolü bulamıyor" diyen bir hata döndürmeye devam ediyor. Bir koleksiyonun nasıl iade edileceğine dair anlayıştan yoksunum. İstasyon parametresini alır. Burada Koleksiyon Döndürme

yöntemdir:

@Override 
public Collection<Connection> getConnectionsFrom(Station station) { 
    return Collection<Connection>(station); 
} 

Ve burada bağlantı sınıftır: aslında Collection dönmek gerekiyordu varsayım yapma,

public class TrainConnection implements Connection { 

    double distance; 

    private Map<String, Connection> connectionMap; 

    public static TrainConnection newConnection = new TrainConnection(); 

    @Override 
    public double getDistance() { 
     return distance; 
    } 

    @Override 
    public Station getStationA() { 
     throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. 
    } 

    @Override 
    public Station getStationB() { 
     throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. 
    } 

    @Override 
    public Station getOtherStation(Station station) { 
     throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. 
    } 

} 
+1

Peki, getConnectionsFrom'daki dönüşünüz yanlış. Koleksiyon belirli bir uygulama değildir. Bu nedenle, koleksiyonu uygulayan belirli bir Nesneyi başlatmanız, ardından istasyonu bu koleksiyona eklemeniz ve sonra geri vermeniz gerekir. – KevinO

+0

' Geri Dön Koleksiyon (istasyon); 'bu kodun ne işe yarar? “Yeni” olmadığı için bir kurucu çağırmıyor. Varsa, Koleksiyon bir arayüzdür, bu yüzden bir tane oluşturamazsınız. Yalnızca arabirimi uygulayan somut sınıfların örneklerini oluşturabilirsiniz (örneğin ArrayList veya HashSet) –

+1

Kodunuzda göremediğim başka bir şey de 'Station'un ne olduğu. Koleksiyon 'döndüreceğini belirtiyorsunuz, ancak bunun yerine koleksiyonu bir" Station "ile başlatmayı deniyorsunuz. –

cevap

0

getConnectionsFrom düzeltmek için nasıl bir örnek olarak Yukarıda belirtildiği gibi.

public Collection<Station> getConnectionsFrom(Station station) 
{ 
    Collection<Station> connections = new ArrayList<>(); 
    connections.add(station); 
    return connections; 
} 

Ancak, yeni Koleksiyonu her zaman yaratılmış olacağını unutmayın. Çözmeye çalıştığınız sorun hakkında daha spesifik olmanız gerekir.

+0

Ayrıca, başka bir kodda bulunmadıkça, bir "İstasyon" bir "Bağlantı" değil, bu yüzden ekleyemezsiniz. –

+0

Bu, @CacheStaheli'nin işaret ettiği gibi çalışmayacaktır. istasyonun connectionMap içindeki bağlantıların istediğini varsayarak, bu durumda –

+0

@ CacheStaheli haritasından geçerek bunları tek tek eklemesi gerekiyor, kesinlikle doğru. Dönüş tipini değiştirdim. – KevinO