get, set

Schoasch

Mitglied
Hallo euch allen -
Ich habe heute angefangen mir etwas Java anzueignen. Habe vorher hauptsächlich in C# programmiert. Und da sind wir auch schon beim Problem -
in C# kann man einfach ein Property erstellen mit einem Getter und einem Setter für die Variable.

Als Beispiel:
Code:
        private int _name;

        public int Name
        {
            get { return _name; }
            set { _name = value; }
        }

Kann man das in Java nur mit eigenen get und set Methoden erreichen?
Mir würde diese Kleinigkeit in Java sehr abgehn - auch allein schon deswegen, da das ganze ja ziemlich unübersichtlich ist. In C# hat man ja dadurch nur eine public-Eigenschaft. In Java hätte man 2 public Methoden - und das obwohl man eine Eigenschaft setzen will.

Danke schon mal im Voraus,
mfg
Georg
 
Zuletzt bearbeitet:
G

Gast2

Gast
Kann man das in Java nur mit eigenen get und set Methoden erreichen?
Kurz gesagt: Ja. Es gibt allerdings Frameworks die einem diesen Code abnehmen. Beispielsweise Project Lombok

Aber warum sollte der Code mit gettern/settern unübersichtlich werden? Wenn du davon zuviele hast, dann würd ich mir eher überlegen ob die Klasse nicht zuviele Attribute hat ;)
 

Schoasch

Mitglied
Danke für deine Antwort!

Aber warum sollte der Code mit gettern/settern unübersichtlich werden?

Naja, der Code Ansich wäre ja nicht wirklich unübersichtlicher als in C#. Mir geht es aber darum nach außen hin, wenn man auf ein Objekt der Klasse zugreift auch wirklich die Eigenschaft gelistet bekommt und nicht 2 Methoden davon. Das verwirrt, wenn man seine Klassen nachher an Dritte weitergibt.

So wie ich das verstanden habe, vereinfacht Lombok zwar die Schreibweise, aber die Schnittstelle nach außen sind immer noch 2 Methoden, richtig?
 

Tobse

Top Contributor
Ich finde eher, es verwirrt wenn da im Code steht
Code:
Object.Property=foo;
und intern wird aber
Code:
Object.setProperty(foo);
draus gemacht.

Ausserdem hast du, wenn du dir den Code z.B. vond er IDE generieren lässt einen minimalen mehraufwand.
 

Schoasch

Mitglied
Ja, das ist wahrscheinlich reine C# bzw Java gewohnheitssache.
Naja ich muss mich jedenfalls damit abfinden - Java ist es wert :toll:
Danke euch!
mfg
 

Wildcard

Top Contributor
Das verwirrt, wenn man seine Klassen nachher an Dritte weitergibt.
Java Entwickler verwirrt das nicht, die sind froh das Sun das in Java nicht eingebaut hat :)

Ist sicher Geschmacksache. Wenn man sich in C# dran gewöhnt hat fehlt es in Java wohl erst einmal, aber da wirst du dich auch schnell an getter und setter gewöhnen.
Bei Eclipse sind die übrigens auch Teil der Auto Completion. Wenn für ein Feld X keine getter/setter vorhanden sind, dann schlägt dir Eclipse in dieser Klasse trotzdem getX und setX Methoden vor. Wählst du die aus, wird die Methode automatisch angelegt.
 

faetzminator

Gesperrter Benutzer
^Mir geht es aber darum nach außen hin, wenn man auf ein Objekt der Klasse zugreift auch wirklich die Eigenschaft gelistet bekommt und nicht 2 Methoden davon. Das verwirrt, wenn man seine Klassen nachher an Dritte weitergibt.
Oft hab ich aber nicht die gleiche Sichtbarkeit, z.B. einen protected Setter und einen public Getter. Was bringt es mir da, wenn ich eine Sichtbarkeit für ein Property erstellen kann, wenn ich es so oder so wieder überschreiben muss? Ganz abgesehen davon, dass ich die Sichtbarkeit im Nachhinein nicht reduzieren kann...
 

EnHancEd[]

Aktives Mitglied
Tipp: Du kannst die getter & setter in Java automatisch generieren lassen

Rechtsklick -> Source -> Generate Getters&Setters.

Erspart dir viel Arbeit.

Gruß
 

Neue Themen


Oben