You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Groovy中Script类是什么?@Field注解作用的技术疑问

关于Groovy @Field注解的作用解释

先明确Groovy脚本的默认编译逻辑:
Groovy脚本会被自动编译成继承自groovy.lang.Script的类,脚本里的代码默认都会被封装到这个类的run方法中。这意味着你直接在脚本里定义的变量,默认是run方法的局部变量,只能在run方法内部使用,脚本里的其他自定义方法根本访问不到这个变量。

而@Field注解的核心作用,就是打破这个限制:
给变量加上@Field注解后,该变量会被提升为脚本类的成员变量(类级别),不再局限于run方法的作用域。这样脚本里的其他自定义方法,就能直接访问这个变量了。

结合你的代码例子来看:

import groovy.transform.Field
@Field List awe = [1, 2, 3]
def awesum() { awe.sum() }
assert awesum() == 6

如果去掉@Field注解,直接写List awe = [1,2,3],调用awesum()时会直接报错——因为awe是run方法的局部变量,awesum()方法根本找不到它。加上@Field后,awe成为类级别的成员变量,awesum()就能正常访问并调用sum()方法,最终断言也能顺利通过。

内容的提问来源于stack exchange,提问作者Rafa S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 22:34:54