gpt4 book ai didi

groovy - 在 Groovy 代码的功能方面,Groovy 对象和 Java 对象有什么区别?

转载 作者:行者123 更新时间:2023-12-02 22:22:16 26 4
gpt4 key购买 nike

首先,如果我说了一些明显的话,请原谅,因为我没有研究这个问题的答案,这只是想到的东西,无法通过快速谷歌搜索找到答案(我也不知道我不太了解 Groovy)。

我正在阅读 Groovy in action(第 1 版),在第 7.6 节中指出“如果您希望将普通的 Java 类识别为 Groovy 类,您只需实现 GroovyObject 接口(interface)。为方便起见,您还可以子类化抽象类 GroovyObjectSupport,它提供默认实现。”

所以我正在尝试一些 Java/Groovy(试图找到使 Java 编码更快/更容易的方法),并且我正在实例化这个对象 Person,它是一个 Java 对象,Person 类没有任何东西与 Groovy 相关(即不实现 GroovyObject 或任何东西)。 Person 有一个 protected 字段 name,带有 getters/setters。我可以在 groovy 测试用例(扩展 GroovyTestCase)中像这样访问它,顺便说一句,它位于不同的包中,不应该像这样访问:

Person person = new Person('joe')
println "Name: ${person.name}"

这不是使用 Groovy 对象所具有的元信息,即 Groovy 会拦截、获取“person.name”的“name”部分并调用 getName() 方法或类似方法吗?但是 person 是一个 Java 对象……也就是说,它不应该有可用的逻辑。

我还没有实现 GroovyObject 或扩展 GroovyObjectSupport,但看起来这个 Java 对象具有我可以使用的 Groovy 特性。

我的问题是,我可以从 Groovy 中使用的 Java 对象假设什么?显然在幕后做了一些事情来用一些 Groovy 特性来增强 Java 定义的类......但是,哪些特性?

所以,我想我的问题可以归结为:“在 Groovy 上下文中使用时对 Java 类做了什么?”

任何有关该主题的信息将不胜感激,谢谢 :)

最佳答案

Groovy 确实增强了您的 Java 类。问题是当您想从 Java 使用这些增强的 Java 类时。然后,您需要采用 GroovyObjectGroovyObjectSupport 策略。

关于您可以期待的内容,您可以查看 groovy 文档:

此外,eclipse 插件还可以很好地从 Groovy 自动完成 Java 类。


Java 对象通过 Groovy 的元对象协议(protocol) (MOP) 得到增强,它拦截并自行分派(dispatch)到方法和属性。这就是为什么您可以拦截东西,这就是将新方法添加到 Java 的最终类的原因。

Groovy 的 MOP 使用缓存策略和反射器类来实现良好的性能。

关于groovy - 在 Groovy 代码的功能方面,Groovy 对象和 Java 对象有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13518280/

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