当您在Clojure中扩展一个Java类并定义一个与该类中的方法同名的方法时,会发生什么?

当您在Clojure中扩展一个Java类并定义一个与该类中的方法同名的方法时,会发生什么?,clojure,java-interop,Clojure,Java Interop,我一直在阅读Clojure编程,在理解Stuarts primary Java互操作示例时遇到了一些问题。他扩展DefaultHandler,并创建一个startElement方法,然后将该处理程序传递给XML解析器。我不明白的是,到底发生了什么。他的startElement实现是否覆盖DefaultHandler中定义的实现?我很困惑。我没有Java方面的经验,也没有面向对象方面的经验 谢谢 浏览DefaultHandler的Java文档回答了我自己的问题 默认情况下,什么也不做。应用程序编写

我一直在阅读Clojure编程,在理解Stuarts primary Java互操作示例时遇到了一些问题。他扩展DefaultHandler,并创建一个startElement方法,然后将该处理程序传递给XML解析器。我不明白的是,到底发生了什么。他的startElement实现是否覆盖DefaultHandler中定义的实现?我很困惑。我没有Java方面的经验,也没有面向对象方面的经验


谢谢

浏览DefaultHandler的Java文档回答了我自己的问题

默认情况下,什么也不做。应用程序编写器可以在子类中重写此方法,以便在每个元素的开头执行特定操作(例如分配新的树节点或将输出写入文件)


这本书不是我的,但我找到了,看起来你是对的。以下是函数(供其他人查看):

你说得对。proxy语句生成了一个新类,与此Java代码等价:

public class SomeNewClass extends DefaultHandler {
    public void startElement(String uri,
                     String localName,
                     String qName,
                     Attributes attributes) {
        System.out.println(*stuff*);
    }
}

因此,代理语句定义了该类,并为您提供了一个实例,该实例现在保存在打印元素处理程序中。

我选择了您的答案,因为它比我的好,而选择我自己的答案是不公平的。:)
public class SomeNewClass extends DefaultHandler {
    public void startElement(String uri,
                     String localName,
                     String qName,
                     Attributes attributes) {
        System.out.println(*stuff*);
    }
}