Was bedeutet "this" ohne dem Punkt und dem Atrributnamen danach?

yannicklong

Mitglied
Hallo Leute,

ich habe folgendes Problem:

Ich habe von meiner Schule eine Aufgabe bekommen, dass ich einen Vortrag über Stücklisten halten soll.
Mir wurde vom Lehrer ein Quelltext zur Verfügung gestellt, den ich allerdings nicht so ganz verstehe.

Die Subklasse
Java:
public class StandardAbo extends Abo_Element
{
    private java.util.ArrayList<Abo_Element> elemente; 

    public void addElement(Abo_Element aboElement)
    {
        if(elemente == null && aboElement != this)
            elemente = new java.util.ArrayList<Abo_Element>();
            
        if(aboElement != this)
            elemente.add(aboElement);
        
    }
    
    public int removeElement(Abo_Element aboElement)
    {
        if(aboElement != this)
        {
         for(Abo_Element aE : elemente)
            if(aE == aboElement)
            {
                elemente.remove(aboElement);
                break;
            }
        }
        elemente.trimToSize();
        return elemente.size();
    }
}

und die Abstracte Klasse

Java:
public abstract class Abo_Element
{
    private String name;
    private String ort;
    private int groesse;
    private java.util.Date erstelltAm;
}

In der Subklasse verstehe ich die Methode

Java:
    public void addElement(Abo_Element aboElement)
    {
        if(elemente == null && aboElement != this)
            elemente = new java.util.ArrayList<Abo_Element>();
            
        if(aboElement != this)
            elemente.add(aboElement);
        
    }
allerdings nicht, da ich nicht genau weiß, was das "this" bedeutet.
Das "this" im Zusammenhang "this.xxx" habe ich schon verstanden, allerdings weiß ich nicht, was das "this" alleine bedeutet.

Vielen Dank im Voraus

MfG,
Euer Yannick
 
Hallo,

[c]this[/c] steht für das aktuelle Objekt, von dem du aus zugreifst. Das [c]this[/c] steht sozusagen für das aktuelle Abo.

Übrigens: Objekte vergleicht man in der Regel nicht mit
Code:
==
oder
Code:
!=
, sondern mit
Code:
equals()
.
Der Unterschied ist der gleiche wie der zwischen "das Gleiche" und "das Selbe". 😉
Aber wahrscheinlich ist das so gewollt, dass die Identität statt dem Inhalt verglichen wird, ich weiß ja nicht genau, was dein Lehrer da vor hatte.
 
Zuletzt bearbeitet:
Ein StandardAbo enthält eine Liste von Abo_Elementen. Das "!=this" verhindert, dass ein StandardAbo Objekt sich selbst in seine Liste packt.

Java:
StandardAbo a = new StandardAbo();
StandardAbo b = new StandardAbo();

a.addElement(b); // funktioniert
a.addElement(a); // funktioniert nicht
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben