2016-04-28 62 views
2

我開始學習Java,想知道如何在調用方法時循環遍歷類的實例,而不是單獨調用方法對於每個實例,象下面這樣:Java - 循環遍歷一個類的實例,而不是調用每個單獨實例的方法

String potentialFlight = (Flight1.getLocations(response)); 
if (potentialFlight != null) { 
    System.out.println(potentialFlight); 
} 

potentialFlight = (Flight2.getLocations(response)); 
if (potentialFlight != null) { 
    System.out.println(potentialFlight); 
} 

爲了清楚起見,Flight1Flight2是一類Flight的實例。響應是解析到方法中的用戶輸入,並且是一個位置,我將使用getLocations方法返回從該位置出發的任何潛在航班。

如果您需要更多我的代碼,請在下面評論。

感謝您的幫助!

+0

當您啓動編碼類或方法,如'Thing1 ','Thing2' ...在某個地方通常是非常錯誤的。爲什麼你甚至有這樣的課程? – Tunaki

+0

如果'Flight1'和'Flight2'是一個類的實例,則它們應該命名爲'flight1'和'flight2'。把它們放在一個列表或數組中,並遍歷該列表或數組。 –

+1

@Tunaki他/她說他們是同一班級的實例,我希望只是他/她不會堅持可變的命名約定。無論如何,你應該將它們存儲在某種集合中,不管它是一個數組還是類似的東西。然後,您可以遍歷實例並執行方法調用。 –

回答

5

你可以把你所有的實例放到一個Array(List)中,並使用foreach構造遍歷所有實例。

例如:

Flight[] flights = { Flight1, Flight2 }; 
for (Flight f : flights) { 
    String potentialFlight = (f.getLocations(response)); 
    if (potentialFlight != null) { 
     System.out.println(potentialFlight); 
    } 
} 
+0

真棒,感謝您的幫助! :) – NatalieHants

0

你或許應該使用靈活的處理如接口:

public interface IFlyingObject { 

    Object getLocations(Object o); 

} 

public class Plane implements IFlyingObject{ 
    @Override 
    public Object getLocations(Object o) { 
     return null; 
    } 
} 
public class Helicopter implements IFlyingObject{ 
    @Override 
    public Object getLocations(Object o) { 
     return null; 
    } 
} 
public static void main(String[] args) { 
    List<IFlyingObject> flightObjects = new ArrayList<IFlyingObject>(); 
    flightObjects.add(new Plane()); 
    flightObjects.add(new Helicopter()); 
    Object response = new Object(); 
    for (IFlyingObject f : flightObjects) { 
     Object result = f.getLocations(response); 
    } 
} 
2

解決方案:

Stream.of(flights) 
     .map(f -> f.getLocations(response)) 
     .filter(f -> f != null) 
     .forEach(System.out::println); 
相關問題