你可以使用一个接口和一个实现它的匿名内部类来实现
Person p1 = new Person("Jenny",20);
Person p2 = new Person("Kate",22);
List pList = Arrays.asList(p1, p2);
interface Operation {
abstract void execute(Person p);
}
public void modList(List list, Operation op) {
for (Person p : list)
op.execute(p);
}
modList(pList, new Operation {
public void execute(Person p) { p.setAge(p.getAge() + 1)};
});
请注意,使用Java5中的varargs,可以简化如下所示的对Arrays.asList的调用.
更新:上述的版本:
interface Operation {
abstract void execute(E elem);
}
public void modList(List extends E> list, Operation op) {
for (E elem : list)
op.execute(elem);
}
modList(pList, new Operation() {
public void execute(Person p) { p.setAge(p.getAge() + 1); }
});
请注意,通过modList的上述定义,您可以执行“操作”>在例如列表 (提供学生是Person的子类).普通列表< E>参数类型不允许这样.