Ответ @Surodip использует компактное решение на основе Apache Commons Collections. Но это решение не типизированного, так как трансформаторные ссылается свойство с помощью строкового выражения: TransformerUtils.invokerTransformer("getName")
Вот более многословным, но типизированного решение с использованием Apache Commons Коллекции:
Collection<String> values = CollectionUtils.collect(messages, new Transformer<Obj, String>(){
@Override
public String transform(Obj input) {
return input.getFoo();
}
});
Вышеуказанные решения использует Apache Commons Collection Version> = 4, который поддерживает дженерики для безопасности типов.
Ниже менее типизированная версия для Apache Collections версии < 4, которая не использует дженерик:
Collection values = CollectionUtils.collect(messages, new Transformer(){
@Override
public Object transform(Object input) {
Obj obj = (Obj) input;
return obj.getFoo();
}
});
У вас есть список OBJS и хотите создать второй список из этого списка , который содержит атрибут Foo всех Obj из objs? –
Ralph