Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.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中类的变量名_Groovy - Fatal编程技术网

获取groovy中类的变量名

获取groovy中类的变量名,groovy,Groovy,我使用Groovy Expando类来保存一些属性和方法。我希望防止多次意外设置同一属性,如下所示 e = new Expando() e.var1 = 'abc' e.var1 = 'cde' 为此,我创建了一个扩展Expando的新类,如下所示 class MyExpando extends Expando { void setProperty(String property, Object newValue) { if(this.getProperty(property)){

我使用Groovy Expando类来保存一些属性和方法。我希望防止多次意外设置同一属性,如下所示

e = new Expando()
e.var1 = 'abc'
e.var1 = 'cde'
为此,我创建了一个扩展Expando的新类,如下所示

class MyExpando extends Expando {
void setProperty(String property, Object newValue) {
   if(this.getProperty(property)){
      throw new RuntimeException("duplicate declaration of $property in  ${this.class.name}")
   } else {
   super.setProperty(property, newValue)
    }
   } 
 }

这可以工作,因此它会抛出RuntimeException,但我希望错误消息类似于e中的重复属性var1。现在的问题是如何获得e

不确定是否可以不使用任何黑客。您需要从
MyExpando
获取对
MyExpando
类型字段的访问权限,因此
MyExpando
应该知道其类型的所有字段。解决方案在groovy脚本和groovy类中也会有所不同。