정적으로 입력 된 언어에 대해서는 뭔가 빠져 있다고 생각합니다. 필자가 펄 방법을 사용했을 때, 호출 할 함수가 무엇인지 말할 수있는 많은 방법이있었습니다.메소드 참조를 객체 생성자에 전달
는 지금은 자바에있어 것을, 나는 쉽게 FASION
나는 일반적인 Button
클래스가 비슷한 일을 할 수있는 방법을 볼 실패합니다. 이것은 사용될 실제 버튼의 하위 클래스입니다. 클릭 할 때마다 다른 메소드를 사용합니다.
클릭했을 때 호출 할 메소드에 대한 참조를 전달할 방법이 없으므로 모든 버튼에 대해 하나의 클래스를 사용할 수 있습니까? 현재
, 나는 다음과 같은 버튼을 만들 :
// Specifically using the subclass that sets "firemode" to "close"
FiremodeClose fc = new FiremodeClose(Settings.ui_panel_start, Settings.ui_panel_row_firemode, game);
painter.addSelectionButton(fc);
clickTracker.addSelectionButton(fc);
이 당연히이 서브 클래스의 무수한 만 배치, 라벨/그래픽 및 메서드 호출에 다른 각을 couses. 그것은 다음과 비슷한 일을하는 것이 더 의미가 있습니다 :
// Generic button, the method that sets "firemode" is somehow passed as arguement to the contsructor.
Button fc = new Button(&referenceToFunctionToCallWhenClicked, otherArguementsEtc);
painter.addSelectionButton(fc);
clickTracker.addSelectionButton(fc);
내가 말했듯이, 따라서 저 멀리 점점시키는,이를 달성하는 방법이되어야한다는 의미가 있기 때문에, 내가 모르는 뭔가가 있어야합니다 느낀다 하나의 서브 클래스가없는 하나의 Button
클래스.
class MyButton {
private final Runnable action;
public MyButton(Runnable action) {
this.action = action;
}
...
}
을 그리고 버튼을 클릭하면 다음 action.run()
전화 :
이것은 인터페이스의 용도입니다. Java 8과 Groovy는 이처럼 간단한 사용 사례를위한 인라인 인터페이스 구현을 만듭니다. – chrylis
^^^ 그리고 익명의 수업도 참조하십시오. –
@chrylis 그것이 인터페이스가 필요한 경우, 의도 한 용도 이외의 용도로 사용했을 것입니다. 나는 이것을위한 몇 가지 코드 예제와 관련된 답변을보고 싶다. – Jarmund