2013-05-16 10 views
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

Вы можете либо передать функцию JavaScript и выполнить его с помощью Rhino в Java 7 или создать интерфейс Command и передать его экземпляры. Java не имеет объектов функции вне классов.

public interface Command { 
    void execute(); 
} 

Или вы можете передавать или реализацию вашего выбора Runnable или Callable.

0

Вы можете только передавать объекты или примитивы в Java, передавая функции в качестве параметра в Java не представляется возможным

0

Вы не можете сделать это в java, как на C#. В java вам необходимо определить интерфейс и передать его в качестве параметра. Last say 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>
Смежные вопросы