4

このように機能するコード行があります。

mrq.setId((mrq.getId()+1));

でも、こう書いてみたら、

mrq.setId((mrq.getId()++));

うまくいきません、エラーは、Invalid argument ot the operation ++/--

その背後にある技術的な理由は何ですか?

4

3 に答える 3

4

インクリメント演算子には、フィールドまたは変数が必要です。評価getId()しても id フィールドにはなりません。値のコピーをgetId()返します(「コピー」とは、プリミティブ型のリテラルコピーと参照型の新しい参照を意味します)。 内部的にgetId()実装されている可能性がありますが、フィールドは返されず、その値のコピーのみが返されます。return id;id

最も近いものは になりますが、そのような式の構文糖としてint i = getId(); setId( getId() + 1 ); return i;許可することを多く求めています。getId()++

于 2012-07-29T03:16:47.863 に答える
3

x++は本質的に と同等ですがx = x + 1、これはあなたの場合には意味がありません:

mrq.getId() = mrq.getId() + 1
于 2012-07-29T03:12:00.260 に答える
1

++演算子は、変数の値を 1 ずつインクリメントするために使用されます。したがって、a++として扱われa=a+1ます。つまり、それが使用されるオペランドは、割り当てが行われる場所になります。

あなたが書くときmrq.getId()++、インクリメントできるオペランド変数を提供しないため、これは機能しません。

于 2012-07-29T08:52:49.703 に答える