gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 21:14:47 25 4
gpt4 key购买 nike

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

谢谢!

最佳答案

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

(def print-element-handler
(proxy [DefaultHandler] []
(startElement
[uri local qname atts]
(println (format "Saw element: %s" qname)))))

你对它的作用是正确的。代理语句创建一个新类,相当于以下 Java 代码:

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

因此,代理语句定义了该类,并为您提供了一个实例,该实例现在保存在 print-element-handler 中。

关于clojure - 当您在 Clojure 中扩展 Java 类并定义与该类中的方法同名的方法时,会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1112709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com