首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GroovyShell和propertyMissing()的问题

GroovyShell和propertyMissing()的问题
EN

Stack Overflow用户
提问于 2011-05-09 14:00:54
回答 1查看 617关注 0票数 0

我在使用propertyMissing()GroovyShell时遇到了问题

我有文件

代码语言:javascript
复制
/**
 * @file FooScript.groovy
 */
abstract class FooScript extends Script {

    def propertyMissing(String name) {
        "This is the property '$name'"
    }

    def propertyMissing(String name, value) {
        println "You tried to set property '$name' to '$value'"
    }
}

代码语言:javascript
复制
/**
 * @file FooScriptTest.groovy
 */

import org.codehaus.groovy.control.*


def fooScript = """\
                foo = 'bar'
                println foo"""

def conf = new CompilerConfiguration()
conf.setScriptBaseClass("FooScript")
def sh = new GroovyShell(conf)

sh.evaluate fooScript

当我运行FooScriptTest.groovy时,我期望输出

您试图将属性“foo”设置为“bar”

这是财产'foo‘

我得到的是:

我的propertyMissing()似乎被默认的一个覆盖了。我怎么才能防止这件事?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-11 22:58:55

用这个代替

代码语言:javascript
复制
abstract class BarScript extends Script {
  def getProperty(String name) {
    "This is the property '$name'"
  }
  void setProperty(String name, value) {
    println "You tried to set property '$name' to '$value'"
  }
}

missingProperty方法是捕捉属性访问的最后一个资源,只有在其他所有操作都失败时才进行测试。

但是groovy.lang.Script已经实现了更高优先级的方法get/setProperty

因此,要捕获缺少的属性,必须在子类中重写以下方法

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5937942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档