以下はあなたのためにそれを行います。
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のコメントが指摘しているように、グアバ以外の方法は短く、十分に読みやすいです。