2

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

我有这个想法:

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

4 回答 4

4

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

public interface Command {
    void execute();
}

或者,您可以传递您选择的 aRunnableCallableimplementation。

于 2013-05-16T12:11:44.937 回答
3

您可以使用 Java 1.8 中的 lambda,“早期访问”版本可在https://jdk8.java.net/lambda/获得

于 2013-05-16T12:17:22.293 回答
0

你不能像在 C# 中那样在 java 中做到这一点。在java中,您需要定义接口并将其作为参数传递。最后说 interface SetClickInterface{ void setClick(); }

    公共类 MyClass 扩展 JButton{
    私有 SetClickInterface 点击方法;

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>
于 2013-05-16T12:18:41.547 回答
0

您只能在 中传递对象或原语Java,无法在 java 中将函数作为参数传递

于 2013-05-16T12:11:53.910 回答