我正在尝试在类上拥有动态属性,因此在创建实例时,它会从我的类中的数组属性中添加总目标。
这是我的班级和我尝试的内容
class Player {
String id
String name
String teamName
@JsonProperty("data")
ArrayList<Integer> goals
Integer totalGoals
ArrayList<Integer> ratings
Integer assists
Integer manOfTheMatches
Integer cleanSheets
Integer getTotalGoals() {
return ListUtil.sum(this.goals)
}
}
但是这个totalGoals总是回来为null。
我有单元测试知道我的sum方法正常工作。
答案 0 :(得分:0)
您同时定义了Integer totalGoals
和Integer getTotalGoals()
。
如果您尝试从外部访问该属性,它应该工作:
def p = new Person()
p.totalGoals // getTotalGoals() will be actually called
但是当从内部Person
类访问时,Groovy将从字段中获取值null
。
您需要删除字段或明确访问getter,即this.getTotalGoals()
。
答案 1 :(得分:0)
如果你在同一个类的另一个方法中调用该属性,你应该使用它的getter:
class Player {
Integer getTotalGoals() { 42 }
def anotherMethod() {
assert 42 == this.getTotalGoals()
}
}
在其他地方使用时,POJO表示法很好:
Player p = new Player()
assert 42 == p.totalGoals