我(應該是)創建一個簡單的菜單顯示。我的Menu類創建一個MenuOption對象列表,這些對象可以被顯示和選擇等。程序員可以使用addOption方法在Menu類的optionList中添加選項。在Java中將任意方法與另一種方法相關聯?
我想要做的就是讓程序員可以將他或她的其他類中的任意方法與特定選項相關聯。
例如,我想它,所以如果程序員鍵入類似:
menu.addOption("Print a roster", roster.print());
那麼addOption方法會做這樣的事情:
optionList.add(new MenuOption("Print a roster", roster.print()));
,然後,從今以後,方法名冊.print()將與菜單選項文本「Print a roster」相關聯,因此如果用戶選擇「Print a roster」,則會調用roster.print()。
============================================== =
順便說一句,我已經開始研究Java 8中的新Lambda表達式,但我不太確定它們是如何工作的,或者它們是否提供了我需要的方法以達到我想要的效果。
任何幫助表示讚賞,謝謝!
完美!我對功能接口的工作方式進行了更多的研究,我發現它沒有太大麻煩。謝謝。 –
啊,我遇到了一些我不知道該怎麼辦的 - 雖然我的任意方法可能會或可能不會傳遞參數?例如,假設print方法被重載,所以它可以被稱爲'roster.print()',或者如果我想讓它接受一個我創建的String [] arr,它可以被稱爲'roster。打印(ARR)'。是否有可能在lambda表達式中實現這個包含參數的打印方法? –
有和沒有參數的方法是兩種完全不同的方法。對於帶有String []參數的版本,你的'MenuOption'構造函數將不得不接受'Consumer'。我不確定你是否仍然能夠使用方法引用(因爲含糊不清,雖然理論上可以推斷),所以你可能需要傳遞lambda'(arr) - > roster.print(arr )'。 –
herman