Javaコードを開発するときは、常にオブジェクトのリストからいくつかのプロパティを抽出する必要があります。javaいくつかのオブジェクトのリストからいくつかのプロパティを抽出する方法と、リファクタリングにもやさしい方法
List<Foo> fooList = ...
List<Integer> idList = new ArrayList<>();
for(Foo f : fooList){
idList.add(f.getId());
}
本番環境では、我々はjava7
を使用ので、私はこれを実装するためにjava8
ストリームを使用することはできませんので。だから私はこの
public static <T, O> List<T> extract(Collection<O> collection, String propertyName) {
List<T> result = new ArrayList<>(collection.size());
for (O o : collection) {
Object val = getFieldValue(propertyName, o);
result.add((T) val);
}
return result;
}
を実装するutilのコードを記述し、その後、私はちょうど
List<Integer> idList = extract(fooList,"id");
以下のようにこれを実装するが、私は例えば、プロパティ名を変更した場合には、リファクタリングするフレンドリーではありません。 id - > fooIdは、この変更を認識できません。
私はこの機能のリファクタリングを実装する方法を知りたいだけでなく、簡単に使いたいと思っていますか?
正直言って、最初の通常のJava 7の方法は、ユーティリティクラスを使用するよりはるかにクリーンで読みやすいように見えます。いくつかのことはそのまま残す方が良いです。代わりに、実際のJava 8ストリームクラスを見て、それらのロジックを試して模倣することもできます。 –
実際にこの一般性が必要ですか?このマッピング関数を使用しているプロパティの数はいくつですか? – Joffrey