将方法作为参数传递

时间:2013-05-16 12:10:02

标签: java parameter-passing

我正在尝试将方法作为参数传递。怎么做?

我记得这个:

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) {}
        });
}

4 个答案:

答案 0 :(得分:4)

您可以传递JavaScript函数并使用Java 7中的Rhino执行它,也可以创建Command接口并传递它的实例。 Java在类之外没有函数对象。

public interface Command {
    void execute();
}

或者您可以通过自己选择的RunnableCallable实施。

答案 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>