gpt4 book ai didi

class - 静态成员上的 Groovy getProperty()

转载 作者:行者123 更新时间:2023-12-01 04:03:59 27 4
gpt4 key购买 nike

这个问题可能会说明我缺乏关于 Groovy 类如何工作的知识,但我试图自己解决这个问题,但没有运气。我想在一个类上创建一个 getProperty() 方法,这样我就可以以 Groovyish 的方式引用成员变量。这与将它们公开不同,因为我确实希望在引用它们时完成一些逻辑。基本上,我正在尝试创建一个使用 ConfigSlurper 的配置 Groovy 类:

class Configuration implements GroovyObject {
private static ConfigObject config = new ConfigSlurper().parse(new File("testing.conf").toURI().toURL())

//This method is illegal, but it illustrates what I want to do
public static String getProperty(String prop){
config.getProperty(prop)
}
}

如果上面的类是合法的,那么我可以像这样引用配置项:
Configuration.dbUser

而不是这个,这需要使 ConfigObject 可用:
Configuration.config.dbUser

我知道,将配置对象公开会更容易,但是知道如何做到这一点(或知道为什么不可能)将帮助我更好地理解 Groovy。

最佳答案

我可以让它工作的唯一方法是通过元类:

class Configuration {
private static ConfigObject config = new ConfigSlurper().parse( "foo = 'bar'" )
}

Configuration.metaClass.static.propertyMissing = { name ->
delegate.config[ name ]
}

println Configuration.foo

然而,可能有更好的方法......

关于class - 静态成员上的 Groovy getProperty(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10800815/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com