我正在(应该)创建一个简单的菜单显示。我的 Menu 类创建了一个 MenuOption 对象列表,可以显示和选择这些对象等。程序员可以使用 addOption 方法将选项添加到 Menu 类 optionList 中的列表中。
我想要做的是让程序员可以将他或她的其他类之一中的任意方法与特定选项关联起来。
例如,如果程序员输入如下内容,我想要它:
menu.addOption("Print a roster", roster.print());
然后 addOption 方法会执行如下操作:
optionList.add(new MenuOption("Print a roster", roster.print()));
然后,从此以后,方法 roster.print() 将与菜单选项文本“打印名册”相关联,因此如果用户选择“打印名册”,则会调用 roster.print()。
==================================================
顺便说一句,我已经开始研究 Java 8 中的新 Lambda 表达式,但我不太确定它们是如何工作的,或者它们是否提供了实现我想要的效果所需的必要方法。
感谢任何帮助,谢谢!
最佳答案
MenuOption
构造函数的第二个参数必须是 Runnable
,并且您可以提供
roster::print
作为一个值。这称为 Method Reference ,并且只是用于创建实现 Functional Interface 的对象的语法糖。 (在本例中 Runnable )。也可以写成
() -> roster.print()
单击按钮时,您需要调用 run()
方法。
关于java - 在 Java 中将任意方法与另一个方法关联?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36853455/