当您在Clojure中扩展一个Java类并定义一个与该类中的方法同名的方法时,会发生什么?
我一直在阅读Clojure编程,在理解Stuarts primary Java互操作示例时遇到了一些问题。他扩展DefaultHandler,并创建一个startElement方法,然后将该处理程序传递给XML解析器。我不明白的是,到底发生了什么。他的startElement实现是否覆盖DefaultHandler中定义的实现?我很困惑。我没有Java方面的经验,也没有面向对象方面的经验当您在Clojure中扩展一个Java类并定义一个与该类中的方法同名的方法时,会发生什么?,clojure,java-interop,Clojure,Java Interop,我一直在阅读Clojure编程,在理解Stuarts primary Java互操作示例时遇到了一些问题。他扩展DefaultHandler,并创建一个startElement方法,然后将该处理程序传递给XML解析器。我不明白的是,到底发生了什么。他的startElement实现是否覆盖DefaultHandler中定义的实现?我很困惑。我没有Java方面的经验,也没有面向对象方面的经验 谢谢 浏览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*);
}
}