【问题标题】:Java stream API: map field without getter syntaxJava 流 API:没有 getter 语法的映射字段
【发布时间】:2015-01-29 19:01:10
【问题描述】:
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());

【问题讨论】:

标签: lambda java-8 java-stream


【解决方案1】:

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

动机:没有理由认为在 Java 中将字段视为方法有点奇怪。由于字段和方法可以具有相同的名称,因此重载也会造成困难。

解决方法:为该字段提供一个 getter,如问题文本中的示例所示。或者改用 lambda 表达式。像这样的:

someMethod(obj -> obj.someField);

【讨论】:

  • 那个 lambda 表达式是什么?
  • @KeithTyler:我在答案文本中添加了一个示例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-03
  • 1970-01-01
  • 1970-01-01
  • 2020-06-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多