2012-07-17 131 views
1

我有一個發生在一個List<>,並在列表中添加所有數字相加,並返回如果該號碼= 100創建不同的對象

我的問題的方法列表,我想使用相同的方法許多不同類型的列表

所以不是有這個

public boolean checkPercent(List<BarStaff> associates){..same..} 
public boolean checkPercent(List<Waiters> associates){..same..} 
public boolean checkPercent(List<KitchenStaff> associates){..same..} 

我想有這個

public boolean checkPercent(List<could be any type> associates){..same..} 

而不是重複使用相同的代碼只是不同的列表,有沒有辦法使用相同的代碼爲所有不同類型的列表(員工有相同的值,所以他們沒有任何不同)?

回答

8

你可以使用一個parameterized method

public <T> boolean checkPercent(List<T> associates) 
{ 
    // snip... 
} 

或只是accept any list

public boolean checkPercent(List<?> associates) 
{ 
    // snip... 
} 
7

您可以創建一個generic method

public <T> boolean checkPercent(List<T> associates) { 
    ... your code ... 
} 
3

使用泛型:

public <T> boolean checkPercent(List<T> associates){...} 
2

的面向對象的方法是將有BarStaffWaiters,和KitchenStaff實施Employee接口,有一個方法public int getPercentage()

public boolean checkPercent(List<? extends Employee> associates) 
{ 
    foreach (Employee associate in associates) 
    { 
     int i = associate.getPercentage(); 
     // rest of code. 
    } 
} 
+0

我不認爲這會奏效。請參閱http://stackoverflow.com/questions/9810445/listmapstring-string-vs-list-extends-mapstring-string – 2012-07-17 15:25:56

+0

擴展和實現是不同的。 – 2012-07-17 15:26:42

+2

這可以工作,如果它是一個數組,即'Employee []'將接受'BarStaff []'。但是,我認爲正確的方法是'List <?擴展Employee>'。 – 2012-07-17 15:28:51