无法从Java中的lambda返回变量[已关闭]

bqf10yzr  于 2022-11-27  发布在  Java
关注(0)|答案(2)|浏览(115)

已关闭。此问题需要更多focused。当前不接受答案。
**想要改进此问题吗?**更新问题,使其仅关注editing this post的一个问题。

21小时前关门了。
Improve this question
所以我有这个方法:

public void trackSelection() {
    showtimesListView.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, currentValue) ->
            System.out.println(currentValue));
}

它跟踪JavaFX中listview组件中当前选定的项。它工作得很好,但是我想更改该方法以返回字符串currentValue,而不是仅仅打印它,以便可以从项目的其他部分访问它。
这就是我失败的地方:

public String trackSelection() {
    showtimesListView.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, currentValue) ->
            return (currentValue);
}

由于某种原因,我似乎只能在lambda表达式的末尾使用void返回类型,有人知道我如何解决这个问题,以便返回字符串吗?

x3naxklr

x3naxklr1#

通过lambda,你可以有效地实现一个侦听器接口,比如https://docs.oracle.com/javase/8/javafx/api/javafx/beans/value/ChangeListener.html,正如你所看到的,它只有一个返回类型为void的方法。
你最需要做的就是向可观察对象提供currentValue,但是你并没有提供任何你真正想要实现的信息。

cbjzeqam

cbjzeqam2#

Lambda表达式并不是凭空出现的,它们符合一个 Functional interface,它是一个声明了一个抽象方法的接口,而lambda是由该接口定义的契约的实现。
您想要的是不可能的,因为无法更改来自JavaFX的协定。
有关Lambda表达式的详细信息,请参阅official tutorial provided by Oracle

相关问题