2011-04-08 2 views
0

jfree.A 콤보 상자를 사용하여 그래프를 생성하는 응용 프로그램을 작성하고 있습니다. 특정 그래프를 선택하기 위해 제공됩니다. 다른 그래프에 대해 다른 클래스를 유지했습니다. 그리고 switch 문을 사용하여 해당 특정 클래스를 선택시 호출합니다. graph.Now의 유형은이 스위치를 제거하고 동적으로 작동 시키려고합니다. 예를 들어, 새로운 그래프 클래스가 그래프의 선택에 쓰여지는 경우, 스위치에 하나 더 사례를 쓰는 대신 해당 클래스를 호출 할 수 있어야합니다. Java의 콜백 콜이 도움이됩니다. 그렇다면 어떻게해야합니까? 또한 이것을 수행하는 다른 방법이 있습니다.Java에서 콜백 사용

답변

1

여기 실제로 원하는 것 같습니다. Interface입니다. 에서와 같이 공통적 인 API 인 Graph 인스턴스가 제공된다는 보장이 있습니다. 그런 다음 모든 그래프가 동일한 콜백 API를 제공하기 때문에 어떤 그래프가 선택되었는지 특별히 걱정할 필요가 없습니다. 다음

public interface Selectable { 
    public void onSelect(); 
} 

그리고 당신처럼, 그래프 구현을 상위 클래스로 사용할 추상 Graph 클래스 :

public abstract class Graph implements Selectable { 
} 

그런 다음 당신은 그냥 각 그래프 구현을 표시 예를 들어, 당신은 뭔가를해야 할 수도 있습니다 extends Graph이고 컴파일러는 각각 onSelect()을 구현해야합니다. 완료되면 switch 문을 그래프의 onSelect() 메서드 호출로 바꿀 수 있습니다.

리플렉션과 Method 클래스를 사용하여 자바에서 완전히 임의의 객체에 대한 실제 동적 콜백/메소드 호출을 수행 할 수 있지만 실제로는 그리 간단하지 않으며 수행하려고하는 것처럼 과장된 행동입니다.