【发布时间】:2016-06-26 20:16:49
【问题描述】:
如何传递附加参数?
这里有一些示例代码可以尝试清楚地说明我想要做什么:
public class A {
public static void create(String txt, ActionListener evt){
MenuItem item = new MenuItem(txt);
SomeClass sample_class = new SomeClass();
// Would like to do this...
// item.addActionListener(evt, sample_class);
item.addActionListener(evt);
}
}
public class B {
public static void init(){
A.create("Test", evt -> {
System.out.println("hi");
});
}
}
我想做的是传递“sample_class”,以便动作侦听器可以使用它。
所以最终结果会是这样,所以我可以在监听器中使用我的类...
A.create("Test", (evt, something) -> {
something.do_something();
});
已经阅读了很多类似的问题,但我无法绕过它。
【问题讨论】:
-
您不需要添加额外的参数,只需创建一个实现 ActionListener 的类并在其中设置您喜欢的任何成员变量。
-
啊,好的。说得通。我想我现在不能使用 Lambda,可以吗?
-
“如果你唯一的工具是一把锤子,我想这很诱人,把所有东西都当作钉子一样对待”——亚伯拉罕·马斯洛
-
如果出于某种原因需要在代码中包含 lambda,请在问题中包含该要求
-
没有理由,只是问问。仍在学习,所以想确定我是否可以或不能将它们与您的上述解决方案一起使用。我已经实现了您的解决方案并设置了成员变量,这似乎工作正常。谢谢。编辑:不确定如何在上述评论中接受您的答案,但这就是我使用的,并且正在工作。
标签: java actionlistener