Groovy:调用方法而不是集合字段

Groovy:调用方法而不是集合字段,groovy,Groovy,我有一个类,它的字段与该类上的方法同名。 我遇到的问题是groovy使用字段而不是方法 类是javax.ws.rs.core.Response,方法/字段是status。 我无法仅使用:Response.status(status.BAD_REQUEST)调用status(…)方法以使其返回ResponseBuilder 有没有办法强迫groovy在这种情况下使用该方法?您有没有失败的例子 我写了这个快速测试: class Test { String status void status

我有一个类,它的字段与该类上的方法同名。 我遇到的问题是groovy使用字段而不是方法

类是javax.ws.rs.core.Response,方法/字段是status。 我无法仅使用:Response.status(status.BAD_REQUEST)调用status(…)方法以使其返回ResponseBuilder


有没有办法强迫groovy在这种情况下使用该方法?

您有没有失败的例子

我写了这个快速测试:

class Test {
  String status
  void status( String status ) {
    println "called method"
  }
}

new Test().status( 'tim' )

正如我所期望的那样(它不会尝试调用属性)

请参见:javax.ws.rs.core.Response.status(status.UNAUTHORIZED).build()。build()方法不存在,因为Response.status(…)正在返回Response的实现,而不是它应该返回的ResponseBuilder。我可以看到该类,但我看不到它如何返回
Response
,如果您以您所说的方式调用它。这就是为什么我要举个例子,这样我就可以a)验证你说的问题,b)看看你的代码中是否有错误我似乎无法用简单的代码得到这个错误。我的代码如下:return Response.status(status.BAD_REQUEST).build(),其中Response是javax.ws.rs.core.Response,status.BAD_REQUEST是Response$status枚举值。它似乎与响应时的getStatus()方法冲突。也许问题在于Response是一个抽象java类,但它应该调用:public ResponseBuilder status(status status){return status((StatusType)status);}@Steven,这让我怀疑这是您的代码的问题(如果它适用于一个简单的示例)。如果它被传递属性,它就不会调用
getStatus
,只要你有括号,就像你在上面的评论中所说的那样,它似乎只是eclipse奇怪地编译了这个类。如果我把它建在格拉德尔,它看起来很好。奇怪的