【问题标题】:Groovy calls deprecated getter method instead of public class fieldGroovy 调用不推荐使用的 getter 方法而不是公共类字段
【发布时间】:2016-06-30 16:54:16
【问题描述】:

我正在使用 groovy 与 Java 库对话。我正在尝试获取类字段的值,但由于 groovy 对 getter 的隐式调用而遇到了麻烦。我正在做这样的事情:

println model.schemaComponent

groovy 正在调用getSchemaComponent 方法。

我遇到的问题是 Java 类有一个名为 schemaComponentpublic 字段,以及该字段的 getter 方法 (getSchemaComponent)。现在,在 Java 库中,他们弃用了 getter 方法,转而支持公共字段,并且 getter 方法总是返回 null

有没有办法以某种方式强制从公共字段而不是 getter 方法获取值?

谢谢

【问题讨论】:

  • 我会跑得很远,离那个图书馆很远。故意留下方法并违反合同是疯狂

标签: java groovy properties


【解决方案1】:

Groovy 有一个direct field-access operator.@,所以你可以这样写你的表达式:

println model.@schemaComponent

也就是说,任何保留 API 调用同时破坏其语义的库都是我会快速逃避的库。

【讨论】:

  • 感谢您的回答,是的,我也是这么想的。他们的所作所为很奇怪,但我认为我别无选择..
【解决方案2】:

使用.@ operator

model.@schemaComponent

Live example

【讨论】:

  • 感谢您的回答。现场示例也很有用
猜你喜欢
  • 2014-09-09
  • 1970-01-01
  • 2011-01-06
  • 1970-01-01
  • 2020-01-13
  • 1970-01-01
  • 1970-01-01
  • 2019-02-28
  • 1970-01-01
相关资源
最近更新 更多