Instanzvariablen absolut referenzieren
GONZO
- java
Hallo,
jetzt habich sogar auch mal ein Problem und brauche etwas Hilfe, von jemandem der sich mit JAVA auskennt.
Ich hab' schon alles, was die Forumssuche zum Thema JAVA ausspuckt, überflogen, aber nix annäherndes gefunden.
Der Code zu meinem Problem sieht so aus:
public class CFoobar
{
private String fooBar;
public CFoobar(String fooBar)
{
CFoobar.fooBar = fooBar;
} // Constructor
} // CFoobar
Ich möchte die Variable fooBar kapseln, sie soll nur durch den Konstruktor gesetzt werden.
Dieser soll sie als Parameter übernehmen.
Da ich dem Grundsatz folgen will, gleiche Daten gleich zu benennen, möchte ich dem Parameter den gleichen Namen wie der gekapselten Variable geben.
Die Zuweisung
CFoobar.fooBar = fooBar;
klappt leider nur, wenn ich die Variable CFoobar.fooBar als static deklariere.
Das kann ich aber überhaupt nicht gebrauchen, da dies eine Eigenschaft ist, die bei jeder Instanz anders sein soll.
In der Language Reference von Sun gibt es nur ein Beispiel mit Klassenvariablen (also als static).
Hat jemand von euch sowas schonmal probiert?
Sollte das nicht auch mit Instanzvariablen gehen?
Vielen Dank schonmal
GONZO
Hallo Gonzo,
mit
CFoobar.fooBar = fooBar;
referenzierst Du ja auch die Klassenvariable. Du musst es aber auf das aktuelle Objekt beschränken. Und damit Du das kannst, ohne die Objektreferenz (Varaiblennamen) zu kennen (weil der ja eh nicht sichtbar wäre), gibt es das äußerst nützliche Schlüsselwort this.
this ist eine Referenz auf das Objekt(nicht Klasse!) selbst.
korrekt muss daher der Code lauten
public class CFoobar
{
private String fooBar;
public CFoobar(String fooBar)
{
this.fooBar = fooBar;
} // Constructor
} // CFoobar
Hallo Michael,
whoa, das ist ja schon zu offensichtilich und einleuchtend, um da selbst drauf zu kommen.
Irgendwie ist die Doku von Sun auch nicht so toll strukturiert, wie ich das von Perl gewohnt bin...
Danke für den schnellen Tip
GONZO
P.S.: Stünde da jetzt deine Emailadresse, könnte ich dir eine kleine Dankesmail schicken und müßte nicht das Forum belasten (-:
Hi!
P.S.: Stünde da jetzt deine Emailadresse, könnte ich dir eine kleine Dankesmail schicken und müßte nicht das Forum belasten (-:
Ich denke, so ein Danke belastet das Forum nicht zu sehr und es ist auch gut fuer's Klima hier. Vor allem aber wissen dann auch andere, dass Du mit der Antwort zufrieden bist und sie Dir geholfen hat und sie nicht noch mehr dazuschreiben muessen (naja, "muessen" sowieso nicht). Ich bin jedenfalls immer etwas unsicher, wie ein Text beim anderen angekommen ist, wenn auf eine Antwort laengere Zeit keine Gegenreaktion erfolgt.
So long
Hallo GONZO
Die nackte Sun-Dokumentation ist auch nicht so übersichtlich. Besser und wirklich nützlich ist da schon das Tutorial von Sun.
Wenn Dir etwas deutschsprachiges lieber ist, dann schau doch mal bei http://www.gkrueger.com/books/k99adown.html
Gruß
Michael