将任意方法与Java中的另一个方法相关联?

时间:2016-04-26 00:39:03

标签: java

我(应该是)创建一个简单的菜单显示。我的Menu类创建了一个MenuOption对象列表,可以显示和选择这些对象等。程序员可以使用addOption方法在Menu类的optionList中为List添加选项。

我希望能够做到的是让程序员可以将他或她的其他类中的任意方法与特定选项相关联。

例如,如果程序员输入类似的内容,我就是这么想的。

menu.addOption("Print a roster", roster.print());

然后addOption方法将执行以下操作:

optionList.add(new MenuOption("Print a roster", roster.print()));

然后,从此以后,方法roster.print()将与菜单选项文本“Print a roster”相关联,因此如果用户选择“Print a roster”,则会调用roster.print()。

===============================================

顺便说一下,我已经开始从Java 8开始研究新的Lambda表达式,但是我不太确定它们是如何工作的,或者它们是否提供了实现我想要的效果所需的必要方法。

感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:1)

MenuOption构造函数的第二个参数必须是Runnable,您才能提供

roster::print

作为一个值。这称为Method Reference,它只是用于创建实现Functional Interface的对象的语法糖(在本例中为Runnable)。它也可以写成

() -> roster.print()

点击按钮,您需要调用run()方法。