this als Zuweisung

ocsme

Top Contributor
Guten Tag,

ich habe eine Frage.
Wie darf ich denn das hier verstehen?

Java:
protected void f(X a) {
a = this;
}

Ist das so etwas ähnliches wie einfach return ?
 

httpdigest

Top Contributor
Nein. `a` enthält dann einfach eine Referenz auf `this`, was aber in diesem Fall ein no-op ist. Das heißt, es macht effektiv nix, weil eine Zuweisung auf einen Parameter nach außen hin ja nicht sichtbar ist.
 

ocsme

Top Contributor
also ich kenne this so nicht das ist mein Problem gerade.
Ich weiß das man mit this Datenelemente verdeckungen weg bekommt z. B.:

Code:
public class Fodo{
private int a;

public static void foo(int a){
this.a = a;
}

Oder bei Konstruktor chaining also so:
Java:
Class Polynom {
private int a,b,c,d;

Polynom(int a, int b, int c, int d){
this.a = a;
this.b = b;
this.c = c;
this.d =d;
}

Polynom(int a, int b, int c){
this(a,b,c,0);
}

oder wenn man das Objekt in der methode ändert und zurück gibt.
Java:
class Rational{

public static void reduce(){
.... hier reduce:D
return this;
}


Wenn ich nun das hier richtig verstehe kann ich this auch einer Variable zuweisen. Was bedeutet das im Klartext?
This ist eine Referenz auf das eigene Objekt. Nun ruft eine Methode witz.f(X a) auf. Also
Java:
X a = new X();
witz.f(a);

was würde passieren wenn es keine no-op wäre? Was passiert dann mit meinem Witz?
Es tut mir echt Leid das ich mir damit gerade wieder so schwer tue :( doch das macht mir mal wieder einen Knoten im Kopf :( grrr.... hätte nicht gedacht mit so einem kleinen wort so einen Knoten im Kopf zu bekommen :(

LG
 

mrBrown

Super-Moderator
Mitarbeiter
In Zusammenhang mit deinem obigen Code ist es immer eine NoOp, in Zusammenhang mit dem meisten anderen Code entweder nicht kompilieren oder Unsinn.

Code:
a = this;
a.eineMethode();

ist das gleiche wie
Java:
this.eineMethode
.

this ist in dem Fall nicht mehr, als einfach nur eine Referenz auf das aktuelle Objekt, genauso wie a in dem Beispiel einfach nur eine Referenz auf irgendein Objekt ist.
 

httpdigest

Top Contributor
Stell' dir einfach vor, dass das Schlüsselwort `this` eine `final` Variable ist, die du in jeder Instanzmethod (und Konstruktor) automatisch zur Verfügung hast, ohne, dass du sie deklarieren musst.
In dem Fall wäre `a = this` also einfach eine Zuweisung von einer Variablen (in dem Fall `this`) zu einer anderen Variablen (in dem Fall `a`). Daran ist doch nichts besonders. Nur, dass halt automatisch am Anfang jeder Instanzmethod (und Konstruktor) `this` eine Referenz auf das "aktuelle Objekt" beinhaltet.
Hiervon außen vor sind natürlich spezielle Sprachkonstrukte, wie eben Aufruf eines anderen Konstruktors innerhalb eines Konstruktors mit `this(...)`.
Aber zu schreiben `this.a = a`, wenn du sowohl einen Parameter `a` als auch eine Instanzvariable `a` hast, dient dann ja dazu, die Namensauflösung von `a` (mit dem `a` ist per Default sonst immer der Parameter gemeint - innerster Scope) zu ändern, so dass eben die Instanzvariable `a` gemeint ist (bei `this.a`) und nicht der Parameter.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Zuweisung und Rechenoperationen Java Basics - Anfänger-Themen 15
Henri Anpassung ein Schleife(Zuweisung eines Ordners) Java Basics - Anfänger-Themen 0
Henri Anpassung ein Schleife(Zuweisung eines Ordners) Java Basics - Anfänger-Themen 27
P Array, forSchleife, Zuweisung Java Basics - Anfänger-Themen 24
B Postinkrement Zuweisung Java Basics - Anfänger-Themen 1
G Wie kann man den Erfolg einer Zuweisung als Boolean Wert verwenden? Java Basics - Anfänger-Themen 12
E Best Practice Exaktes Rechnen mit (Pseudo-)Rationalen/Realen Zahlen. Operations Zuweisung für (eigene) Klassen Java Basics - Anfänger-Themen 3
O ExecutorService: ThreadGroup zuweisung? Java Basics - Anfänger-Themen 2
V Arrays aus eigener Klasse erstellt, zuweisung aber spuckt Fehler in verbindung mit main Methode aus. Java Basics - Anfänger-Themen 3
J Zuweisung/Tabelle Java Basics - Anfänger-Themen 6
G OutOfBoundsException bei Array-Zuweisung Java Basics - Anfänger-Themen 2
P Erste Schritte Koordinaten Zuweisung Java Basics - Anfänger-Themen 6
Luk10 Frage zu Zuweisung Java Basics - Anfänger-Themen 7
J Zuweisung von gesicherten Werten funktioniert nicht Java Basics - Anfänger-Themen 9
J Erste Schritte Anfängerproblem Stringkonvertierung und Zuweisung Java Basics - Anfänger-Themen 2
3 Verschachtelte Zuweisung Java Basics - Anfänger-Themen 4
C Array zuweisung Java Basics - Anfänger-Themen 4
D Array-Zuweisung Java Basics - Anfänger-Themen 4
H variablen zuweisung Java Basics - Anfänger-Themen 4
T OOP StringTokenizer, Zuweisung der einzelnen Attribute Java Basics - Anfänger-Themen 21
B Fragen zur Initialisierung/Zuweisung der Variable + Packages erstellen Java Basics - Anfänger-Themen 4
F int zuweisung überprüfen Java Basics - Anfänger-Themen 3
hdi Verständnisfrage zu Zuweisung + Post-Inkrement Java Basics - Anfänger-Themen 3
A kurze frage zu arrays und deren zuweisung Java Basics - Anfänger-Themen 11
G Wieso ist eine String-Übergabe keine by-reference-Zuweisung? Java Basics - Anfänger-Themen 7
Z zuweisung this. Java Basics - Anfänger-Themen 12
S Zuweisung mit Operation "^=" Java Basics - Anfänger-Themen 2
M IntegerVariable und Zuweisung von Zahlen die mit 0 anfangen! Java Basics - Anfänger-Themen 3
H Variable zuweisung in einem If-Statement Java Basics - Anfänger-Themen 3
F Abfrage in Zuweisung mit Fragezeichen Java Basics - Anfänger-Themen 5
Z Zugriff auf Attribute nach Zuweisung einer Referenz Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben