2017-01-12 5 views
0

クラスに動的プロパティを設定しようとしています。インスタンスが作成されると、クラスの配列プロパティの合計目標が加算されます。クラスGroovyの動的ゲッター

はここに私のクラスであり、私はこのtotalGoalsは常にnullとして戻ってくるしかし

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) 
    } 
} 

を試みたが何をしています。

私のsumメソッドが正しく動作するかどうかを調べるユニットテストがあります。

+0

であっても初期化した後'Player'?それは正しい 'ゴール 'を示していますか? – Rao

答えて

0

Integer totalGoalsInteger getTotalGoals()の両方が定義されています。 あなたはそれの外からプロパティにアクセスしようとした場合に動作するはずです:

def p = new Person() 
p.totalGoals // getTotalGoals() will be actually called 

しかし、内部PersonクラスのGroovyからアクセスnullあるフィールドから値を取得します。

フィールドを削除するか、ゲッターに明示的にアクセスする必要があります(this.getTotalGoals())。

0

あなたが同じクラスの別のメソッド内でプロパティを呼び出す場合、あなたはそれがゲッターだ使用する必要があります。どこかで使用する場合

class Player { 
    Integer getTotalGoals() { 42 } 

    def anotherMethod() { 
    assert 42 == this.getTotalGoals() 
    } 
} 

、POJO表記は大丈夫です:

Player p = new Player() 
assert 42 == p.totalGoals