Problema Estendendo uma classe em Clojure: ClassFormatError: Duplicar nome e assinatura campo

StackOverflow https://stackoverflow.com/questions/1627747

  •  06-07-2019
  •  | 
  •  

Pergunta

Eu estou tentando estender JButton com Clojure, mas eu tive um problema quando eu tento criar meus próprios construtores. Sempre que eu uso :constructors com :gen-class eu continuo recebendo um "ClassFormatError: Duplicar nome do campo e assinatura" mensagem quando tento instanciar minha classe.

I pensar Eu estou seguindo o Clojure docs corretamente. Estou fazendo algo errado?

Exemplo:

(ns test.gui.button
  (:gen-class
   :extends javax.swing.JButton
   :constructors {[] [String]}
   :init init))

(defn -init []
  [["Click Me"] nil])
Foi útil?

Solução

JButton estende javax.swing.AbstractButton que já tem um protegida init método. Se você mudar o nome da função Clojure-init para, por exemplo, my-init o problema se foi:

(ns test.gui.button
  (:gen-class
   :extends javax.swing.JButton
   :constructors {[] [String]}
   :init my-init))

(defn -my-init []
  [["Click Me"] nil])
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top