2010-08-24 81 views
0

我有一個看起來像這樣Java列表類型參數

public void setDayIntervals(Days day, List<HourRange> ranges) { 
     int hourMask = 0; 
     for (HourRange intRange : ranges) { 
        int Start= intRange.getStart(); 
        int end = intRange.getEnd(); 
      } 
     } 

} 

我不得不從另一個類傳遞範圍列表的方法。

for(int s = 0; s < adSchedule.getTargets().length ; s++){ 
     List<HourRange> ranges = null; 
     int Start = adSchedule.getTargets(s).getStartHour(); 
     int end = adSchedule.getTargets(s).getEndHour()-1; 
      if(adSchedule.getTargets(s).getDayOfWeek()==DayOfWeek.MONDAY){ 
       // ranges ????????? here i have to pass values Start and End 
       CamSchedule.setDayIntervals(Days.ONE, ranges); 
      } 
    } 

誰能告訴我如何傳遞範圍在上述方法setDayIntervals(Days.one, ramges)

public static class HourRange { 
     int start; 
     int end; 

     public HourRange(int start, int end) { 
      super(); 
      if(start > end) 
       throw new IllegalArgumentException(); 
      this.start = start; 
      this.end = end; 
     } 

     public int getStart() { 
      return start; 
     } 

     public int getEnd() { 
      return end; 
     } 
} 
+0

HourRange類的構造函數是什麼樣的? – 2010-08-24 13:52:56

+0

這是功課還是你維護別人的代碼? 'HourRange'的 – BalusC 2010-08-24 13:57:40

+0

:你不需要調用'super()',因爲'HourRange'除了'Object'之外什麼都沒有。你可以在'start'和'end'中添加'private'修飾符以使這個類不可變(除非有人使用反射等骯髒的技巧) – 2010-08-24 14:06:39

回答

2

你必須創建一個HourRange對象,並將其添加到列表中。事情是這樣的:

ranges.add(new HourRange(Start, end)); 

的例子假定 HourRange有這樣的構造:

public HourRange(int start, int end) { 
    // code to copy start and end to internal fields. 
} 

(它具有此構造

+0

和@Dean謝謝你們,我讓你度過了我的一天.. U guys rock .. – jimmy 2010-08-24 14:12:09

0

相反

List<HourRange> ranges = null;

你可能想

List<HourRange> ranges = new ArrayList<HourRange>();

這就給了你一個列表添加到;直到你將範圍初始化爲列表,沒有任何東西可以進入該列表。

+0

或者在這種情況下,只是'Collections.singletonList (新的HourRange ...' – 2010-08-24 13:59:43