this. oder nicht this, das ist die Frage

boelkstoff

Erfahrenes Mitglied
Hallo.

Ich stelle mir gerade folgende Frage:

Wenn ich in einer Klasse private globale Variablen habe, und Methoden darauf zugreifen, soll man dann this. nehmen oder nicht?

Macht dies einen Unterschied oder nicht?
Weiß jemand dazu genaues
mfg
Phil
 
Original geschrieben von boelkstoff
Hallo.

Ich stelle mir gerade folgende Frage:

Wenn ich in einer Klasse private globale Variablen habe, und Methoden darauf zugreifen, soll man dann this. nehmen oder nicht?

Macht dies einen Unterschied oder nicht?
Weiß jemand dazu genaues
mfg
Phil

Macht normalerweise keinen Unterschied. Es sei denn, da sitzt ein Idiotenprogrammierer an der Tastatur und tippt z.B.

Code:
class MyClass
{
 private MyValue myValue;

 public void setMyValue(MyValue myValue)
 {
  myValue = myValue;
 }

Hier wäre sowohl ratsam, entweder

this.myValue = myValue;

zu tippen oder den Übergabeparameter geschickter zu benennen, z.B.

public void setMyValue(MyValue newValue)

und dann die entsprechende Zuweisung vorzunehmen.

myValue = newValue;

Manchmal ist auch ein MyClass.this o.ä. zu verwenden, aber vorrangig im statischen Kontext.
 
Hallo!

Wenn ich in einer Klasse private globale Variablen habe, und Methoden darauf zugreifen, soll man dann this. nehmen oder nicht?

Es gibt keine globalen privaten Variablen.

Was du wahrscheinlich meinst sind private static deklarierte Klassenvariablen.

Du kannst zwar this zum ansprechen der Variable verwenden, jedoch
verwendet man this im allgemeinen nur zum Zugriff auf Membervariablen.
Da die Variable als static deklariert und deshalb an die Klasse gebunden ist
sollte man eher ohne this. arbeiten und den Klassennamen als Accessor verwenden. (das schlägt sogar Eclipse vor ;-) ) Wovon man natürlich absehen wenn man sich in der entsprechenden Klasse mit den static Variablen befindet. Dann kannst du this verwenden. Jedoch bedeutet this immer "die eigene Instanz" und da eine static Variable wie gesagt nicht an der Instanz sondern an der Klasse hängt ist diese Form des Ansprechens etwas ungeschickt, aber das sind eigentlich nur Kleinigkeiten ;-)

Code:
public class Test {

    private static String str;
    
    public Test(String str){
        Test.str = str;
    }

    public static void main(String[] args) {
        new Test("Hallo");
    }
}

weiterhin macht ein this allgemein im statischen Kontext keinen Sinn bzw. führt zu Verwirrungen.

SomeClass.this macht IMHO nur bei einem Konstrukt Sinn bei inner Classes:

Code:
public class Test {

    private String str = "Foo";
    
    public Test(){
        new InnerTest();
    }
    
    public static void main(String[] args){
        new Test();
    }
    
    class InnerTest{
        private String str = "Bar";
        
        public InnerTest(){
            System.out.println("InnerTest: " + str);
            System.out.println("Test: " + Test.this.str);
        }
    }
}

Manchmal ist auch ein MyClass.this o.ä. zu verwenden, aber vorrangig im statischen Kontext.

Kannst du mir mal ein Beispiel zeigen indem this in statischem Kontext benutzt werden kann? Ich dachte immer in statischem Kontext gäbe es kein this...

Gruß Tom
 
Zuletzt bearbeitet:
Danke Tom.

Also nehme ich kein this .

Egal was ich hier im java Forum frage, Du weißt immer eine qulifizierte Antwort.

Was machst Du Beruflich und wie lange arbeitest Du mit Java bereits
 
this solltest du verwenden sobald eine lokale Variable deine Klassenvariable überschreibt,
oder aber wenn du in einer Methode arbeitest in der du mit sehr vielen lokalen Variablen arbeitest,
kannst du this verwenden um klar zu machen das du hier einen Wert der Klassenvariable
setzt.

Sprich solange es gut ersichtlich ist welche Werte gesetzt werden brauchst du this nicht, kann
aber ein Mittel sein um klarheit zu schaffen.
 
das hängt wohl von der IDE ab - je klüger desto besser. Aber ich tippe schneller this als irgendwelche strg+Zeichen Kombinationen - es lebe 10 Finger.

Aber ihr habt ja recht, das sollte kein Grund sein.
 
Zurück