我正在尝试将方法作为参数传递。怎么做?
我记得这个:
public class MyButton extends JButton{
public MyButton(){
super();
}
public void setClick( method() );
{
this.addMouseListener(new MouseListener() {
public void mouseClicked(MouseEvent arg0) {
method();
}
public void mouseEntered(MouseEvent arg0) {}
public void mouseExited(MouseEvent arg0) {}
public void mousePressed(MouseEvent arg0) {}
public void mouseReleased(MouseEvent arg0) {}
});
}
答案 0 :(得分:4)
您可以传递JavaScript函数并使用Java 7中的Rhino执行它,也可以创建Command
接口并传递它的实例。 Java在类之外没有函数对象。
public interface Command {
void execute();
}
或者您可以通过自己选择的Runnable
或Callable
实施。
答案 1 :(得分:3)
您可以使用Java 1.8中的lambdas,https://jdk8.java.net/lambda/提供“早期访问”版本
答案 2 :(得分:0)
您只能在Java
中传递对象或基元,在java中传递函数作为参数是不可能的
答案 3 :(得分:0)
你不能像在C#中那样在java中这样做。 在java中,您需要定义接口并将其作为参数传递。 最后说 interface SetClickInterface { void setClick(); }
public class MyClass extends JButton{
private SetClickInterface clickMethod;
public void setSetClickInterface (SetClickInterface click)
{
this.clickMethod= click;
}
{
this.addMouseListener(new MouseListener() {
public void mouseClicked(MouseEvent arg0) {
if(clickMethod != null)
{
clickMethod.setClick();
}
}
public void mouseEntered(MouseEvent arg0) {}
public void mouseExited(MouseEvent arg0) {}
public void mousePressed(MouseEvent arg0) {}
public void mouseReleased(MouseEvent arg0) {}
});
}
</pre>