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>