Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过点表示法访问Groovy 3.x中类映射对象中的成员引发异常_Groovy_Vert.x - Fatal编程技术网

通过点表示法访问Groovy 3.x中类映射对象中的成员引发异常

通过点表示法访问Groovy 3.x中类映射对象中的成员引发异常,groovy,vert.x,Groovy,Vert.x,我正在使用Vert.x4.0.3和Groovy3.0.7版本->Vertx4.0.3和Groovy。它有一个扩展模块,其中包含一个方法: public static Object getAt(JsonObject json, String key) { return json.getValue(key); } 现在,在我的代码中,我试图获得JsonObject的一个成员: json.getString( 'id' ) // works fine json[ 'id' ] //

我正在使用Vert.x4.0.3和Groovy3.0.7版本->
Vertx4.0.3和Groovy
。它有一个扩展模块,其中包含一个方法:

  public static Object getAt(JsonObject json, String key) {
    return json.getValue(key);
  }
现在,在我的代码中,我试图获得
JsonObject
的一个成员:

json.getString( 'id' ) // works fine
json[ 'id' ] // works fine
json.id // throws NoSuchMethodException
我错过了什么

在Groovy 3中,
getAt()
的“点表示法”是否以某种方式被“弃用”

更新:

事实上,
getAt()
对于点表示法是不够的,而
getProperty()
是:

class A {
  String a = 'aaaaaaaaa'
  
  //Object getAt( String key ){ a }
   
  def getProperty(String name) { a }
}

def a = new A()

assert 'aaaaaaaaa' == a[ 'aa' ]
assert 'aaaaaaaaa' == a.aaaa
assert 'aaaaaaaaa' == a.a

json.id
仅当存在
getId()
方法、
id
字段或用于拦截对此类实例的属性访问的内容时才有效(
propertyMissing(String)
getProperty(String)
等)。默认情况下,
getAt(JsonObject,String)
方法不会参与计算
json.id

,事实并非如此。但另一方面,从来没有必要重写
getAt
JsonObject
没有
getAt
,所以它被添加到了已删除的答案中,这是一个误读的问题。抱歉。哦,对了,我想他们是“地图式”的。我认为杰夫斯的回答说明了问题所在(IMHO不应该被删除)<代码>getAt仅在对象为贴图时使用。所以问题是:为什么它以前奏效了?@JeffScottBrown对你的答案做点什么,这样我就可以接受了