4 Stimmen

Warum ist es nicht möglich, den Wert zu inkrementieren und dann in der Set-Methode mit ++ zu übergeben?

Ich habe eine Code-Zeile, die wie folgt funktioniert,

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

Aber als ich versuchte, es so zu schreiben,

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

Es funktioniert nicht, der Fehler ist, Invalid argument ot the operation ++/--

Was ist der technische Grund dafür?

4voto

Judge Mental Punkte 5164

Der Inkrement-Operator erfordert ein Feld oder eine Variable. Auswertung von getId() ergibt kein id-Feld, sondern gibt eine Kopie des Wertes getId() zurückgibt (mit "Kopie" meine ich eine wörtliche Kopie für primitive Typen und eine neue Referenz für Referenztypen). getId() könnte implementiert werden als return id; intern, aber man bekommt das Feld nicht zurück id nur eine Kopie seines Wertes.

Die nächstliegende Entsprechung wäre int i = getId(); setId( getId() + 1 ); return i; aber es ist viel verlangt, dass Sie getId()++ als syntaktischer Zucker für einen solchen Ausdruck.

3voto

blahdiblah Punkte 31920

x++ ist im Wesentlichen gleichbedeutend mit x = x + 1 was in Ihrem Fall keinen Sinn macht:

mrq.getId() = mrq.getId() + 1

1voto

Bharat Sinha Punkte 13307

++ Operator wird verwendet, um den Wert einer Variablen um 1 zu erhöhen. a++ wird behandelt als a=a+1 . Das bedeutet, dass der Operand, für den er verwendet wird, derjenige ist, bei dem die Zuweisung erfolgt.

Wenn Sie schreiben mrq.getId()++ keine Operandenvariable zur Verfügung, die sie inkrementieren kann, und daher funktioniert dies nicht.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X