【发布时间】:2011-11-01 20:52:22
【问题描述】:
我有一个用于许多类的 for 循环,但 for 循环中的任务是不同的。例如 Class Foo 使用以下
for(Pojoclass a : listofPojo){
if(a.getX().equals(b)){
methos(a.getX());
}
}
类 Bar 使用以下内容:
for(Pojoclass a : listofpojo){
if(a.getX().equals(x)){
methos(a.getX());
} // or some other logic
}
我在我的项目中发现了许多这样的循环,它们在同一个对象上迭代,但行为不同。我该如何重新考虑这个因素?
编辑:我不是在处理字符串,而是在处理 POJO 类
【问题讨论】:
-
通常,您定义一个类来执行“不同的行为”并将该类的实例传递给通用函数。您可以使用显式类来做到这一点,但是有一些方法可以使用“匿名内部类”来做到这一点,这在某些方面更优雅(尽管通常更容易混淆)。当然,所有做“不同行为”的类都必须是给定类的子类或实现相同的接口,以便公共代码仅引用一个超类/接口。
-
你的意思是
a.equals(b)?除非,你真的想测试对象身份...... -
@mark Byers: do this is a method with parameter a
标签: java refactoring for-loop