この最終的なプロパティを変更できるはずですか?本は私がすべきだと言っているが、私はエラーが出ている

Groovy noobここでは、最初のGroovyの本を使っています。

final
フィールドを定義するのではなく、読み取り専用のプロパティを定義しています。インスタンス内からプロパティを変更することができますクラスを定義するメソッドですが、外部からは取得できません

ここに問題のコードはありますが、

はコンストラクタの外で最終フィールド 'miles'を変更できません。

コード:

class Car
{
    final miles = 0

    def getMiles()
    {
        println "getMiles called"
        miles
    }

    def drive(dist){if (dist>0) miles += dist }

}

この本では、ドライブインスタンスメソッド内から miles
を変更できる必要があると私は間違っていますか?

ベストアンサー

私は彼らが何を意味したと思うか(あなたが言いたいことを言っているかどうか分からない)というのは、定義されたセッターメソッドがないということです。クラス外から変更することはできません。

しかし、 はまだ final
のプロパティです。つまり、コンストラクタや宣言時に一度変更することはできません。

プロパティとフィールドルール

つまり、次の2つの問題を参照してください: 16282752
のように、より多くの探索が必要かもしれませんが、これはローカルのスクリプトプロパティに限られています。

My guess is you’re using a 1.7+ Groovy, while the book targets
<= 1.6.


こちらのご質問
もご覧ください。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です