0

しようとしているのですClass.Method()++がうまくいきません。

簡単な例:

人物クラス

public class person {
    private int age;

    public void age(int value) {
        this.age = value;
    }
    public int age() {
        return this.age;
    }
}

メインクラスで

次のステートメントでは、 に関するエラーが発生しますp1.age()++

public static void main(String[] args) {
     person p1 = new person();
     p1.age(p1.age()++); // Get an error
}

しかし、以下はうまくいきます:

public static void main(String[] args) {
         person p1 = new person();
         p1.age(p1.age()+1); // It works fine
    }

主な質問:

なぜp1.age()++エラーが発生しますが、そうでp1.age()+1はありませんか?

PS :

私はこれができることを知っています:

person p1 = new person();
    int myAge = p1.age();
    p1.age(myAge++);
4

4 に答える 4

6

なぜなら

x++;

の略です

x = x + 1;

そしてあなたの場合は

p1.age() = p1.age() + 1; // ERROR

また、割り当ての左側にメソッド呼び出しを配置することはできません。

于 2013-07-23T19:49:17.177 に答える
3

method()++意味method() = method() + 1

メソッドに値を割り当てることができないため、これは間違っています

于 2013-07-23T19:50:01.837 に答える
0

++ は、使用した方法で、後置演算子です。値を使用してから、インクリメントします。

メソッドは値を返します。値ではありません。

Java言語仕様から:

後置式の結果は、数値型に変換可能な型 (§5.1.8) の変数でなければなりません。そうしないと、コンパイル時エラーが発生します。

于 2013-07-23T19:50:28.247 に答える
0

p1.ageは値を返しますが、インクリメント演算子 ++ は値を読み取り、それを代入しようとします。メソッドは Java で代入を受け取ることができないため、コンパイラ エラーが発生します。

于 2013-07-23T19:50:56.277 に答える