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
相关产品推荐
相关产品推荐

