我有一行像这样工作的代码,
mrq.setId((mrq.getId()+1));
但是,当我试图这样写时,
mrq.setId((mrq.getId()++));
它不起作用,错误是,Invalid argument ot the operation ++/--
其背后的技术原因是什么?
增量运算符需要一个字段或变量。评估getId()
不会产生 id 字段;它返回值getId()
返回的副本(“副本”是指原始类型的文字副本和引用类型的新引用)。 getId()
可能在return id;
内部实现,但您不会取回 field id
,而只会取回其值的副本。
最接近的等价物是int i = getId(); setId( getId() + 1 ); return i;
,但是您要求很多允许getId()++
作为此类表达式的语法糖。
x++
本质上等同于x = x + 1
,这在您的情况下没有意义:
mrq.getId() = mrq.getId() + 1
++
运算符用于将变量的值增加 1。因此a++
被视为a=a+1
。这意味着使用它的操作数将是完成赋值的地方。
当您编写mrq.getId()++
它时,它不会为您提供一个可以递增的操作数变量,因此这不起作用。