groovy - 如何从已解析的 groovy 脚本中查找类声明
问题描述
TL;DR:如何访问在动态解析的 groovy 脚本中定义的类?
假设我有一个像这样的 groovy 脚本:
def foo(){ print "foo" }
def bar(){ print "bar" }
class Baz {
def waz(){
print "Baz#waz"
}
}
...我可以将其解析为这样的 Script 对象:
Script myScript = new GroovyShell().parse(new File("my_script.groovy"))
然后我知道我可以访问这些功能:
myShell.foo()
myShell.bar()
但是我怎样才能访问Baz
类声明呢?
谢谢
解决方案
默认情况下,groovyshell 使用自己的类加载器来加载脚本和嵌套类。
所以,你可以通过类加载器访问它
def script = '''
def foo(){ print "foo" }
def bar(){ print "bar" }
class Baz {
def waz(){
print "Baz#waz"
}
}
'''
def gshell = new GroovyShell()
Script myScript = gshell.parse(script)
myScript.foo()
println gshell.getClassLoader().loadClass('Baz')
推荐阅读
- docker - 通过 docker 容器集群中的 NGINX 配置将自定义端口分配给 PgAdmin4
- firebase - Firebase 长动态链接分析
- json - 如何测试 CSP 报告 uri 端点?
- spring-boot - 列表
- > 映射到列表
- python - 熊猫中的列选择
- symfony - Typo3 条件 => Symfony 表达式语言:列表中的 IP
- javascript - 将 JavaScript 电子邮件错误框应用于其他元素
- unity3d - 距离后团结摧毁子弹
- c# - 如何形成对另一个域的 SSO 的 SAML 请求?
- scala - 如何将存储在数据帧上的更改应用到另一个数据帧?