2010-06-01 10 views
8

Clojure에서 Java Swing 구성 요소를 확장하려고합니다. 즉, javax.swing.JComponent를 확장하고 순수 Clojure에 구현 된 일부 사용자 정의 메서드를 추가하고자합니다. 모든 표준 継承행동 양식.Clojure에서 Java Swing 클래스 확장하기

"프록시"를 사용해 보았습니다. 익명의 내부 클래스와 같은 방식으로 단일 인스턴스 만 원할 경우 훌륭하게 작동합니다. 그러나 나는 인스턴스의 임의의 숫자를 생성 할 수 있도록 명명 된 클래스를 정말 좋아할 것입니다.

이렇게하는 것이 좋습니다.

답변

10

인라인 함수 또는 네임 스페이스 선언으로 사용할 수 있습니다.

(gen-class :extends javax.swing.JComponent ...) 
+0

Greg에게 감사드립니다. 그렇지만 이것은 내가 AOT 컴파일을 사용해야한다는 것을 의미합니까? 가능한 경우 REPL에서이 모든 것을 실행할 수 있기를 바랄 것입니다 ..... – mikera

+1

예,이 방법으로 AOT 컴파일을 사용해야합니다. REPL에이 함수가 필요한 경우 프록시 객체를 반환하는 함수에서 호출을 프록시에 래핑 할 수 있습니다. – Greg

+0

Greg에게 감사드립니다. 프록시 메소드는 매우 잘 작동합니다. 연속 호출이 완전히 새로운 익명 클래스 정의를 생성하게 될 것이라고 걱정했지만 컴파일러가 단일 클래스 인스턴스를 만들만큼 충분히 영리 해 보입니다. – mikera