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

Groovy脚本输出为Null问题求助:基础类实例无法正常输出

问题分析与解决

问题原因

你遇到的核心问题是构造函数内的赋值未指向类成员属性:当构造函数的参数名和类的属性名完全相同时,直接写UserName = UserName这类语句,Groovy会默认把左边的变量识别为构造函数的局部参数,而非类的成员属性,导致类属性始终处于未赋值的null状态。

解决方案

在构造函数的赋值语句前添加this关键字,明确指定要赋值的是类的成员属性:

修改后的类代码

@groovy.transform.ToString
class Tweet {

    String UserName
    String First
    String Last
    String Tweet
    Integer retweet
    Date createdOn

    public Tweet(String UserName, String First, String Last, String Tweet) {
        this.UserName = UserName
        this.First = First
        this.Last = Last
        this.Tweet = Tweet
        retweet = 0
        createdOn = new Date()
    }

    void addToRetweets() {
        retweet += 1
    }
}

调用脚本保持不变,运行后就能正常输出实例的所有属性值。

可选简化写法

Groovy支持自动处理属性初始化,如果你不需要复杂的构造逻辑,还可以省略自定义构造函数,直接给属性设置默认值:

@groovy.transform.ToString
class Tweet {
    String UserName
    String First
    String Last
    String Tweet
    Integer retweet = 0
    Date createdOn = new Date()

    void addToRetweets() {
        retweet += 1
    }
}

// 调用时通过命名参数传参
def tweet = new Tweet(UserName: "cmith", First: "Chris", Last: "Smith", Tweet: "Today is going to be a good day")
println tweet

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 01:37:12