2012-07-17 56 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