下面将为你做。
List<String> names = Lists.transform(persons, new NameFunction());
哪里NameFunction如下
class NameFunction implements Function<Person, String> {
@Override
@Nullable
public String apply(@Nullable Person person) {
return person.getName();
}
}
编辑1:
结合@mmounirou答案。
定义你转换功能为您的Person类 内枚举这使得有用的,如果以后需要基于另一个属性如年龄
class Person {
String name;
String age;
Person(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
enum TransformerFunctions implements Function<Person, String> {
NAME_FUNCTION {
@Override
@Nullable
public String apply(@Nullable Person person) {
return person.getName();
}
},
AGE_FUNCTION {
@Override
@Nullable
public String apply(@Nullable Person person) {
return person.getAge();
}
};
}
改造和使用的功能
List<String> names = Lists.transform(people,Person.TransformerFunctions.NAME_FUNCTION);
但正如@ ogregoire的评论所指出的那样,非番石榴的方式更短且可读性足够。
保持您的代码原样。它足够短并且可读。 – 2013-04-08 11:15:30
我知道,但这只是一个例子,我想应用它的情况更复杂,所以这有很大帮助。 – membersound 2013-04-08 17:49:01