Klassen Kann eine Klasse sich selbst returnen?

L

Luza

Gast
Nun ja, ich denke der Titel sagt schon alles.
Mir ist klar dass ich einfach ein neues Objekt erstellen könnte in dessen Konstruktor ich meine instanzvariablen schreibe und diese dann returne.
Danke im Vorraus
 
L

Luza

Gast
Java:
public class Klasse{
    int x;
    int y;

  public Klasse(){
    x = 5;
    y = 2;
  }

  public Klasse ichVerändereInstanzVariablen(int x, int y){
  this.x = x;
  this.y = y;
  //hier will ich jetzt das Objekt in der die Methode ausgefüht wird returnen
 }
}

Das möchte ich machen ;)
Meine Idee wäre so gewesen:

Java:
public class Klasse{
    int x;
    int y;

  public Klasse(int x, int y){
    this.x = x;
    this.y = y;
  }

  public Klasse ichVerändereInstanzVariablen(int x, int y){
  this.x = x;
  this.y = y;
  Klasse r = new Klasse(x, y);
  return r;
 }
}
 

HoaX

Top Contributor
Naja, Bequemlichkeit wie man sie auch z.B. beim StringBuilder hat. Da scheibt man ja auch einfach.
Java:
sb.append("Hallo").append(space).append("Welt");
Oder bei so manchem DI-Framework
Java:
x.bind(Interface.class).to(Implementation.class);

Es muss nicht immer sinnvoll sein, kann es aber.
 

mimo

Aktives Mitglied
Ist doch egal...

Ob du nun mit void einen Nutzlosen Wert zurückgibst, oder die Referenz auf das Objekt...

Es verwirrt wahrscheinlich aber einen fremde Reviewer... Ich würde es auch nicht machen, da man keinen überflüssigen Code produzieren sollte.
 
M

maki

Gast
Java:
  public Klasse ichVerändereInstanzVariablen(int x, int y){
  this.x = x;
  this.y = y;
  Klasse r = new Klasse(x, y);
  return r;
 }
Das ist garantiert sinnfrei ;)

Entweder es werden die Eigenschaften des Objektes geändert und this zurückgegeben (Builderpattern), oder es wird eine neue Instanz mit den neuen Werten zurückgegeben und das aktuelle Objekt bleibt unverändert (immutable).

Beides auf einmal ist Quatsch ;)
 

mimo

Aktives Mitglied
Java:
  public Klasse ichVerändereInstanzVariablen(int x, int y){
  this.x = x;
  this.y = y;
  Klasse r = new Klasse(x, y);
  return r;
 }
Das ist garantiert sinnfrei ;)

Entweder es werden die Eigenschaften des Objektes geändert und this zurückgegeben (Builderpattern), oder es wird eine neue Instanz mit den neuen Werten zurückgegeben und das aktuelle Objekt bleibt unverändert (immutable).

Beides auf einmal ist Quatsch ;)

Das war doch nur ein Beispiel damit ich verstehe worum es geht...
 

Luza

Neues Mitglied
Java:
  public Klasse ichVerändereInstanzVariablen(int x, int y){
  this.x = x;
  this.y = y;
  Klasse r = new Klasse(x, y);
  return r;
 }
Das ist garantiert sinnfrei ;)

Entweder es werden die Eigenschaften des Objektes geändert und this zurückgegeben (Builderpattern), oder es wird eine neue Instanz mit den neuen Werten zurückgegeben und das aktuelle Objekt bleibt unverändert (immutable).

Beides auf einmal ist Quatsch ;)
Ja, das ist mir dann auch aufgefallen^^ Ich wollte nur was denn da returnt werden soll.
Bin absoluter Java-Anfänger. Ich habe voller Freude auf Java dieses Jahr Info dazugewählt muss mir es jetzt jedoch mangels Qualität beim Infolehrer selbst beibringen... :/
 

timbeau

Gesperrter Benutzer
Dann solltest du eher für die Variablen getter & Setter-Methoden basteln, mit denen du Werte innerhalb eines Objekts verändern kannst, wenn diese Variablen private sind.

Selbst wenn du diese über den Konstruktor ändern willst sollte man diese Methoden verwenden.

So ist ein klassisches Startbeispiel die Klasse Konto:

Java:
public Konto(int kontostand) {
this.konstostand = konstostand;
}

nicht unbedingt so gut wie

Java:
public Konto(int kontostand) {
this.konstostand = setKontoStand(konstostand);
}

private int Kontostand(int kontostand){
if(kontostand < 0) { //gib laut
}
...
 

TKausL

Top Contributor
Dann solltest du eher für die Variablen getter & Setter-Methoden basteln, mit denen du Werte innerhalb eines Objekts verändern kannst, wenn diese Variablen private sind.

Selbst wenn du diese über den Konstruktor ändern willst sollte man diese Methoden verwenden.

So ist ein klassisches Startbeispiel die Klasse Konto:

Java:
public Konto(int kontostand) {
this.konstostand = konstostand;
}

nicht unbedingt so gut wie

Java:
public Konto(int kontostand) {
this.konstostand = setKontoStand(konstostand);
}

private int Kontostand(int kontostand){
if(kontostand < 0) { //gib laut
}
...

Die Codes werden schöne Fehler Bringen. Java kennt wohl keinen "konstostand". Ich auch nicht :lol:
 

timbeau

Gesperrter Benutzer
rechtschreibFlame.jpg
 

faetzminator

Gesperrter Benutzer
Naja, Bequemlichkeit wie man sie auch z.B. beim StringBuilder hat. Da scheibt man ja auch einfach [...]
Na gut, da hast du recht :) Gibt schon Anwendungsgebiete, bei welchen es toll ist. Ist zwar kein Java, aber JQuery z.B. ;) Alles (?) was [c]void[/c] zurückgeben würde, gibt sich selbst zurück.

Edit:
Luza, um zum Thema zurückzukommen. Wie bereits gesagt ist [c]this[/c] die Referenz auf das aktuelle Objekt. Aber meist gibt es das Case, dass eine Klasse in Methoden seinen Typen zurückgibt, aber nicht sich selbst. Das findet man bei immutablen Objekten, wie auch beim String ([c]String y = z.substring(...)[/c]). Wenn du eine unveränderliche Klasse Point hättest:
Java:
public class Point {
    // final, kann nur bei der Initialisierung gesetzt werden
    private final int x;
    private final int y;
    
    public Point(int x, int y) {
        this.x = x;
        this.y = y;
    }

    public Point withX(int x) {
        // x vom Parameter, y vom Objekt
        return new Point(x, y);
    }
    
    public Point withY(int y) {
        return new Point(x, y);
    }
}
Wenn ich nun einen Punkt p hab, und auf der X-Achse auf die 5 verschieben will, kann ich folgendes machen:
Java:
Point newPoint = p.withX(5);
Natürlich kann man da auch [c]public Point plusX(int add)[/c] oder alles andere beliebige implementieren.
 
Zuletzt bearbeitet:
E

emailundlos

Gast
Der Zurechtgewiesene kann eine Belehrung schwerlich von einer Beleidigung unterscheiden. Der dumme bleibt Hans dabei. Was hat diese Schikanierung eigentlich hier zu suchen?
 

ARadauer

Top Contributor
Ich versteh sowieos nicht ganz, warum die Konvention bei Setter nicht vorsieht, das Objekt selber zurück zu geben... Ist schon praktisch

Java:
public class Kunde {

    private String name;
    private String telefon;
    private String strasse;

    public String getName() {
        return name;
    }

    public Kunde setName(String name) {
        this.name = name;
        return this;
    }

    public String getTelefon() {
        return telefon;
    }

    public Kunde setTelefon(String telefon) {
        this.telefon = telefon;
        return this;
    }

    public String getStrasse() {
        return strasse;
    }

    public Kunde setStrasse(String strasse) {
        this.strasse = strasse;
        return this;
    }

    public static void test() {
        Kunde kunde = new Kunde();
        kunde.setName("Andreas").setStrasse("Test Straße").setTelefon("061234578");
    }

}
 

Noctarius

Top Contributor
Dabei aber nicht explizit für Setter sondern als genereller Ansatz, dass alle void Methoden die eigene Instanz zurückliefern. Damit wäre quasi der Datentyp von void "verändert" worden.
 

Noctarius

Top Contributor
Tja das wäre z.B. eine der zu klärenden Fragen gewesen. Wäre dann vermutlich eine "virtuelle" Instanz der Klasse gewesen, welche auch nur die statisch erreichbaren Methoden anzeigt, keine Ahnung.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Warum lässt sich eine Klasse nicht starten, wenn eine andere Klasse in dem Modul fehlerhaft ist? Java Basics - Anfänger-Themen 1
M Wie setzt sich eine Klasse zusammen? Java Basics - Anfänger-Themen 16
E Eine Klasse hat eine Instanz von sich selbst. Java Basics - Anfänger-Themen 6
M Eine Klasse die sich selber öffnen kann. Java Basics - Anfänger-Themen 4
berserkerdq2 Intelij, wie kann ich einstellen, dass die aktuelle Klasse ausgeführt wird, wenn ich aufs Startsymbol drücke, gibts da eine Tastenkombination? Java Basics - Anfänger-Themen 11
J Zugriff auf eine 2. Klasse die per UI-Designer erstellt wurde Java Basics - Anfänger-Themen 1
_user_q Wie eine Methode/Funktion aus einer Klasse mit Constructor aufrufen? Java Basics - Anfänger-Themen 20
frager2345 Singleton-Muster Java ->Nur eine Instanz einer Klasse erzeugen können Java Basics - Anfänger-Themen 45
berserkerdq2 Habe eine Klasse, welche public ist, diese hat eine public Methode, die nicht static ist. Wenn ich nun versuche aufzurufen Probleme? Java Basics - Anfänger-Themen 8
berserkerdq2 Zwei Klassen Erben von der Klasse A, die eine Klasse kann ich an Methoden übergeben, die als Parameter A haben, die andere nicht? Java Basics - Anfänger-Themen 3
F Suche nach betreuender Person für eine Jahresarbeit der 12. Klasse. Java Basics - Anfänger-Themen 6
M Wie kann ich eine Methode aus einem Interface in eine Klasse implementieren, so dass sie ihre Funktion ausführt? Java Basics - Anfänger-Themen 7
Igig1 Welche Werte sind als default Werte in einem Array, der als Datentyp eine Klasse hat? Java Basics - Anfänger-Themen 1
O Wie erstelle ich eine Instanz in einer Klasse für die ich die Instanz will? Java Basics - Anfänger-Themen 4
Vivien Auf eine Variable von einer anderen Klasse aus zugreifen Java Basics - Anfänger-Themen 3
P Wie rufe ich Methoden mit einer Referenz auf eine Klasse||Objekt auf Java Basics - Anfänger-Themen 4
jonny_2k12 Wie kann ich eine ArrayList aus einer Klasse in eine andere übergeben? Java Basics - Anfänger-Themen 21
M Zugriff auf eine ArrayList in einer anderen Klasse Java Basics - Anfänger-Themen 4
bensdt Klasse erweitern um eine Methode "void decrement()" Java Basics - Anfänger-Themen 5
D OOP- Eine Klasse in mehrere Klassen aufteilen Java Basics - Anfänger-Themen 7
W Zwei Programme sollen auf eine Klasse zugreifen Java Basics - Anfänger-Themen 18
L Klassen Wie “installiert” man eine Klasse? Java Basics - Anfänger-Themen 2
L Klassen Kann eine Unterklasse einer abstrakten Klasse ein Interface implementieren? Java Basics - Anfänger-Themen 2
H Eine befühlte Klasse weiter geben an Controller Java Basics - Anfänger-Themen 12
I Wie benutzt man eine Klasse? Java Basics - Anfänger-Themen 13
A Variablen Main Klasse soll auf eine andere Klasse zugreifen Java Basics - Anfänger-Themen 3
F OOP Instanz einer Klasse an eine andere weitergeben Java Basics - Anfänger-Themen 16
M Aufgabe: Eine Klasse und viele Untermethoden Java Basics - Anfänger-Themen 30
DaCrazyJavaExpert Klassen Von einer Klasse auf eine erbende Klasse zugreifen Java Basics - Anfänger-Themen 13
L Eine Klasse aus dem gleichen Package starten Java Basics - Anfänger-Themen 3
B Wie kann ich eine Methode einer selbst erstellten Klasse statisch importieren? Java Basics - Anfänger-Themen 5
D Klasse durch eine Schleife wiederholen Java Basics - Anfänger-Themen 1
J Werte an eine andere Klasse übergeben Java Basics - Anfänger-Themen 4
T Erste Schritte Schreiben Sie eine Klasse Zeit, die eine Zeitdauer in Minuten beschreibt. Die Anzahl Minuten verwalt Java Basics - Anfänger-Themen 3
U Klassen IntelliJ14.1.1 Ultimate startet eine Main-Klasse NICHT MEHR Java Basics - Anfänger-Themen 0
P auf eine andere Klasse zugreifen Java Basics - Anfänger-Themen 12
OlafHD Einen String an eine Klasse übergeben Java Basics - Anfänger-Themen 2
O Übergabe in eine andere Klasse Java Basics - Anfänger-Themen 3
I Java Eingabe aus einer anderen Klasse in eine andere an Konstruktor übergeben Java Basics - Anfänger-Themen 4
E Suche Klasse die eine Bedinung prüft und einen von zwei Auswahlwerten zurückgibt... Java Basics - Anfänger-Themen 6
V wie kann ich eine laufende Klasse zum "stopen" bringen und zur main zurückkehren? Java Basics - Anfänger-Themen 11
W (XML/XSL) Daten aus Eclipse in eine Klasse Laden. Java Basics - Anfänger-Themen 1
S Methoden eine Instanz einer eigenen Klasse als parameter übergeben Java Basics - Anfänger-Themen 9
S Wann existiert eine Instanz (eigene Klasse) Java Basics - Anfänger-Themen 8
M Wann eine Wrapper Klasse verwenden und wann einen primitiven Datentypen? Java Basics - Anfänger-Themen 8
S Aus einer Klasse eine andere laden Java Basics - Anfänger-Themen 6
D Wie baue ich sinnvoll eine Klasse, genauer die Methodenaufrufe auf? Java Basics - Anfänger-Themen 4
S Interface Implementieren von Methoden aus einer Klasse in eine GUI Java Basics - Anfänger-Themen 6
M Klasse fuer eine 5er Liste? Java Basics - Anfänger-Themen 5
R Interface Datentyp bei Erzeugung eines Objekts, dessen Klasse eine Schnittstelle implementiert Java Basics - Anfänger-Themen 18
G Klassen Array durch eine Klasse aufrufen Java Basics - Anfänger-Themen 4
J Mehrere Klassen in eine Klasse schreiben? Java Basics - Anfänger-Themen 7
N Kann man in einem Projekt nur eine Klasse ausführen? Java Basics - Anfänger-Themen 6
K Zugriff einer Klasse auf eine andere Andere -> bad operand for binary operator Java Basics - Anfänger-Themen 5
W Klassen Kann eine Variable nicht aus einer Klasse bekommen Java Basics - Anfänger-Themen 9
J Variablen Array aus anderer Klasse auslesen-Wie verhindert man eine NullPointerException? Java Basics - Anfänger-Themen 4
M Klassen Eine Klasse abrufen ohne eine neue Instanze auf zu rufen? Java Basics - Anfänger-Themen 8
M Eine Klasse als .dmg (MAc) abspeichern Java Basics - Anfänger-Themen 5
P Eingabe aus JTextField/Area an eine andere Klasse übergeben. Java Basics - Anfänger-Themen 2
A Threads Eine Klasse muss auf Variable der Anderen warten. Java Basics - Anfänger-Themen 6
L Methoden Eine Methode aus einer anderen Klasse aufrufen Java Basics - Anfänger-Themen 4
D OOP Zugriff auf eine Klasse aus einem Interface-Objekt Java Basics - Anfänger-Themen 7
E Wert in eine andere Klasse übergeben Java Basics - Anfänger-Themen 3
L Über abstrakte Klasse auf eine Klasse zugreifen? Java Basics - Anfänger-Themen 6
N OOP Zugriff auf eine Objekt innerhalb einer Klasse aus statischen Methoden Java Basics - Anfänger-Themen 9
M 2Methoden eine Klasse 1 Thread Java Basics - Anfänger-Themen 3
S Von einer Klasse auf eine Liste einer anderen Klasse zugreifen Java Basics - Anfänger-Themen 8
J eine Klasse mit speziellem Parameter aufrufen und verwenden Java Basics - Anfänger-Themen 9
M Suche eine Klasse, mit der ich Mausklicks ausführen kann. Java Basics - Anfänger-Themen 3
E Variable aus einer Methode heraus in eine andere Klasse übergeben Java Basics - Anfänger-Themen 13
B Was passiert, wenn eine konkrete Klasse von generische Klasse erbt? Java Basics - Anfänger-Themen 14
Q 2 Objekte in eine Klasse übergeben Java Basics - Anfänger-Themen 10
J OOP Zugriff einer Klasse auf eine Andere Java Basics - Anfänger-Themen 8
B Eine neue Klasse in anderen Projekten nutzen Java Basics - Anfänger-Themen 5
S Zwei Programme verwenden eine selbe Klasse Java Basics - Anfänger-Themen 4
M Zwei Threads greifen auf eine Methode einer Klasse zu. Komplikationen? Java Basics - Anfänger-Themen 18
S Wann wird eine Klasse geladen? Java Basics - Anfänger-Themen 17
F wie auf eine andere Klasse zugreifen? Java Basics - Anfänger-Themen 2
D Wie neue Instanz einer Klasse erstellen, von der ich nur eine andere Instanz kenne? Java Basics - Anfänger-Themen 13
-horn- EINE setter/getter klasse aus mehreren klassen befüllen Java Basics - Anfänger-Themen 13
C Auf eine Klasse byteweise zugreifen Java Basics - Anfänger-Themen 16
L Aus einer Methode eine eigene Klasse machen - modular coden Java Basics - Anfänger-Themen 14
H Eine Abstrakte Klasse muss. Java Basics - Anfänger-Themen 7
J Zugriff auf ein Array über eine andere Klasse Java Basics - Anfänger-Themen 7
G kein Zugriff auf eine Klasse in einem Unterordner Java Basics - Anfänger-Themen 11
M Übergabe von Variablen in eine Klasse Java Basics - Anfänger-Themen 13
G Zugriff auf eine Klasse beschränken. Java Basics - Anfänger-Themen 6
A Konstruktorübergabe von einer klasse an eine andere Java Basics - Anfänger-Themen 2
G Eine Klasse als Rückgabetyp? Java Basics - Anfänger-Themen 12
G Java Klasse durch eine andere Java Klasse starten? Java Basics - Anfänger-Themen 13
W Klasse in eine extra Java-Datei Java Basics - Anfänger-Themen 21
B Wie aus instanzierter Klasse eine Methode der Main-Klasse Java Basics - Anfänger-Themen 9
philipp Wie kann ich eine Funktion einer Klasse benutzen ? Java Basics - Anfänger-Themen 2
MasterEvil Eine Klasse von mehreren Klassen ableiten? Java Basics - Anfänger-Themen 12
M Methode einer Klasse in eine andere Übergeben Java Basics - Anfänger-Themen 4
T Methoden für GUI in eine andere Klasse Java Basics - Anfänger-Themen 2
H Was ist nocheinmal eine statische Klasse? Java Basics - Anfänger-Themen 6
S Variablenwert von einer Klasse in eine andere Klasse geben Java Basics - Anfänger-Themen 2
I eine Klasse aus der Jar-Datei aus dem Servlet starten Java Basics - Anfänger-Themen 4
M Braucht jede Klasse eine Schnittstelle ? Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben