首先,如果我说一些明显的话,请原谅我,因为我没有研究这个问题的答案,这只是我想到的东西,无法通过快速谷歌搜索找到答案(我也不知道 Groovy出色地)。
我正在阅读 Groovy in action(第 1 版),在第 7.6 节中它指出“如果您希望将普通的 Java 类识别为 Groovy 类,您只需实现 GroovyObject 接口。为方便起见,您还可以子类化抽象类 GroovyObjectSupport,它提供默认实现。”
所以我正在尝试一些 Java/Groovy(试图找到使 Java 编码更快/更容易的方法),并且我正在实例化这个对象 Person,它是一个 Java 对象,而 Person 类与它没有任何关系Groovy(即不实现 GroovyObject 或任何东西)。Person 有一个受保护的字段,名称,带有 getter/setter。我可以在一个 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 类时做了什么?”
任何有关该主题的信息将不胜感激,谢谢:)