以下将为您完成。
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 的评论指出的那样,非番石榴方式更短且可读性足够。