Java流API:没有getter语法的map字段

时间:2015-01-29 19:01:11

标签: lambda java-8 java-stream

class Person {
    public String name;
    public String getName() { return name; }
}

是否有通过lambda访问流API中的字段的特殊语法糖?我明白了:

List<Person> persons;
persons.stream().map(Person::getName).collect(Collectors.toList());
persons.stream().map(p -> p.name).collect(Collectors.toList());

类似的东西(哪些不起作用,我知道):

persons.stream().map(Person::name).collect(Collectors.toList());

1 个答案:

答案 0 :(得分:6)

字段访问没有类似于方法引用的语法。如果有的话,有时会很方便。

事实上,没有理由认为Java在将字段视为方法方面有点奇怪。由于字段和方法可以具有相同的名称,因此也会导致重载困难。

解决方法是为您提供的字段提供getter,或者使用lambda表达式。