Java 将方法作为参数传递

Java 将方法作为参数传递,java,parameter-passing,Java,Parameter Passing,我正在尝试将一个方法作为参数传递。怎么做 我有这样的想法: public class MyButton extends JButton{ public MyButton(){ super(); } public void setClick( method() ); { this.addMouseListener(new MouseListener() { public void mouseClicked(MouseEvent arg0) {

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

我有这样的想法:

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

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

public interface Command {
    void execute();
}

或者您可以传递您选择的
Runnable
Callable
实现。

您只能在
Java
中传递对象或原语,在Java中传递函数作为参数是不可能的

您可以使用Java 1.8中的lambdas,这是一种“早期访问”该版本在

上提供,您不能像在C#中那样在java中使用它。 在java中,您需要定义接口并将其作为参数传递。 最后一句话 界面设置单击界面{ void setClick(); } 公共类MyClass扩展了JButton{ 私有设置点击界面点击方式

public void设置设置点击界面(设置点击界面点击)
{
this.clickMethod=click;
}
{
this.addMouseListener(新的MouseListener(){
公共无效鼠标单击(鼠标事件arg0){
如果(clickMethod!=null)
{
clickMethod.setClick();
}
}
public void mouseEntered(MouseEvent arg0){}
public void mouseExited(MouseEvent arg0){}
public void mousePressed(MouseEvent arg0){}
public void MouseEvent arg0{}
});
}
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>