Java warum so umständlich?

3 Antworten

Das ist ein Pattern um im gesamten Code die selbe Instanz verwenden zu können ohne dass man diese durch den Code weiterreicht.

Es ist in etwa so ähnlich wie das Singleton Pattern, allerdings erlaubt es zusätzlich noch neu Instancen dieser Klasse zu erstellen.

Allgemein sollte man aber die Instanz durch den Code durchreichen, Sinn und Zweck des Singleton Patterns ist ja eigentlich, dass es keine 2 Instanzen der Klasse geben kann, das ist allerdings in diesem Fall schon möglich, weswegen ich mich auch frage warum hier dieser Weg gewählt wurde, ich weiß aber auch nicht worauf das Tutorial rauslaufen soll.


helpomepls 
Beitragsersteller
 27.06.2020, 22:22

Das ist ein Tutorial von einem Jugendlichen für einen Minecraft Client ^^

0
PeterKremsner  27.06.2020, 22:25
@helpomepls

Ok ja es kann sein, dass es später schon durchaus einen Sinn hat das ganze so zu machen.

Dieser Code erlaubt es hald zum einen leicht eine Instanz der Klasse im ganze Code sichtbar zu machen und zudem kann man diese Instanz auch im ganze Code gültig ändern ohne alle Referenzen darauf zu ändern.

Ich würde mal behaupten, das ganze ist quasi einfach nur so etwas wie ein Shortcut um den Code kürzer machen zu können.

Es kann auch sein, dass es das Interface von Minecraft selbst fordert, dass es so gemacht ist.

1

Damit du über instance. auf alle Attribute der Klasse zugreifen kannst.

(instance.settingsManager, instance.eventManager, ..)

Woher ich das weiß:Hobby – Programmieren ist mein Hobby & Beruf

helpomepls 
Beitragsersteller
 27.06.2020, 22:23

Schon, aber man könnte die andere Funktion ja static machen oder beim Call eine neue Instanz erzeugen ;)

1
MrAmazing2  27.06.2020, 22:24
@helpomepls

Glaub mir, du willst nicht alles static machen xD

So isses viel schöner.

Aber ja, sollte möglich sein :D

1

Hey,

da die Methode in der Klasse nicht statisch ist, ist es eine Instanz-Methode. Instanz-Methoden können nur von Instanzen aufgerufen werden.

Die Art und Weise der Instanz ist aber schlecht gelöst, es ist sinnvoller die Instanz privat zu machen und einen Getter zu nutzen, sodass die Variable immutable ist.

Mfg Jannick (L1nd)

Woher ich das weiß:Hobby

helpomepls 
Beitragsersteller
 27.06.2020, 22:21

Ja, aber man könnte sie ja statisch machen oder eine Instanz in der anderen Methode erzeugen

0