私は多くのクラスで使用されるforループを持っていますが、forループ内のタスクは異なります。たとえば、Fooクラスがループのためにリファクタリングする方法はありますか?
for(Pojoclass a : listofPojo){
if(a.getX().equals(b)){
methos(a.getX());
}
}
とクラスバーには、次の使用する次の使用:
for(Pojoclass a : listofpojo){
if(a.getX().equals(x)){
methos(a.getX());
} // or some other logic
}
を私は、同じオブジェクトに反復処理が異なる動作を行う私のプロジェクトでは、多くのこのようなループを見つけます。これをどのように再要因化するのですか?
編集:私は、文字列を扱うわけではない、私はあなたがこの種のものをリファクタリングしていない
は、「異なる動作」を実行し、一般的な機能に、そのクラスのインスタンスを渡すクラスを定義します。これは明示的なクラスで行うことができますが、いくつかの点ではよりエレガントな「匿名の内部クラス」(通常はもっと難読化されていますが)で行う方法があります。もちろん、 "異なる動作"を行うクラスのすべては、与えられたクラスのサブクラスでなければならず、共通のコードが1つのスーパークラス/インタフェースのみを参照するように、同じインタフェースを実装する必要があります。 –
あなたは確かに 'a.equals(b)'を意味しますか?もし、私がラムダ、関数ポインタ、デリゲート、イベント、シグナル、コンティニュイションと思うなら、あなたはオブジェクトアイデンティティをテストすることを本当に望んでいないのですか? –
@マークByers:これはパラメータを持つメソッドです –