【问题标题】:how can I replace java code that has double colon [closed]如何替换具有双冒号的java代码[关闭]
【发布时间】:2021-05-23 07:08:10
【问题描述】:

有如下代码

Grid.Column<Person> firstNameColumn = grid.addColumn(Person::getFirstName).setHeader("First Name");
Grid.Column<Person> lastNameColumn = grid.addColumn(Person::getLastName).setHeader("Last Name");

我想在没有:: 的情况下重写它。原因是我需要使用getLastName之类的函数来拥有getLastName(firstname, age)之类的两个参数。

你能给我一个解决方案或如何搜索它吗?

谢谢

【问题讨论】:

  • ....addColumn(person -&gt; person.getLastName(firstName, age))... --- 有一个带有参数firstNameage 的方法getLastName 似乎很可疑。我建议彻底审查此更改。
  • 我只是举个例子。我想为这个例子重写它的 pre 8 版本的 java
  • 这不是您最初要求的。如果您想将代码迁移到 java8 之前的版本,我建议edit发送帖子并更改实际问题。 --- 请问为什么要将代码迁移回pre-java8?
  • 双冒号是 lambda 表达式的简写,您会经常在 Streams 和类似内容中看到它。
  • 这能回答你的问题吗? :: (double colon) operator in Java 8

标签: java vaadin vaadin-flow vaadin-grid


【解决方案1】:

Java 8 之前的版本通常会使用这样的匿名类:

grid.addColumn(new ValueProvider<Person, String>() {
    @Override
    public String apply(Person person) {
        return person.getLastName();
    }
})

但是您不需要它来自定义方法调用。一个普通的 lambda 就可以了:

grid.addColumn(person -> person.getLastName(foo))

如您所见,后者更加简洁。 Vaadin 的 API 旨在包含 Java 8 特性,例如函数引用、lambdas 和流。 JDK8 和更新版本也是现代 Vaadin 版本运行的要求。

【讨论】:

    【解决方案2】:

    你可以使用 lambda

    grid.addColumn(person -> person.getLastName(person.getFirstName(),person.getAge());
    

    欲了解更多信息,请转至this site

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-06
      • 1970-01-01
      相关资源
      最近更新 更多