Java warum so umständlich?
Er greift dann aus anderen Methoden so drauf zu:
Tutorial.instance.startClient();
Welchen Sinn hat es, dass die Klasse eine Instanz von sich selbst hat?
3 Antworten
![](https://images.gutefrage.net/media/default/user/9_nmmslarge.png?v=1551279448000)
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.
![](https://images.gutefrage.net/media/default/user/9_nmmslarge.png?v=1551279448000)
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.
![](https://images.gutefrage.net/media/default/user/8_nmmslarge.png?v=1551279448000)
![](https://images.gutefrage.net/media/user/MrAmazing2/1562539605664_nmmslarge__63_0_466_466_da6195808c107c57ce2a8b233a2bcf4f.jpg?v=1562539606000)
Damit du über instance. auf alle Attribute der Klasse zugreifen kannst.
(instance.settingsManager, instance.eventManager, ..)
![](https://images.gutefrage.net/media/default/user/8_nmmslarge.png?v=1551279448000)
Schon, aber man könnte die andere Funktion ja static machen oder beim Call eine neue Instanz erzeugen ;)
![](https://images.gutefrage.net/media/user/MrAmazing2/1562539605664_nmmslarge__63_0_466_466_da6195808c107c57ce2a8b233a2bcf4f.jpg?v=1562539606000)
Glaub mir, du willst nicht alles static machen xD
So isses viel schöner.
Aber ja, sollte möglich sein :D
![](https://images.gutefrage.net/media/default/user/15_nmmslarge.png?v=1551279448000)
![](https://images.gutefrage.net/media/user/JanMarcel01/1545064833528_nmmslarge__96_96_1728_1728_1530d37dedc00fac79f60049c3b6a4db.jpg?v=1545064834000)
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)
![](https://images.gutefrage.net/media/default/user/8_nmmslarge.png?v=1551279448000)
Ja, aber man könnte sie ja statisch machen oder eine Instanz in der anderen Methode erzeugen
![](https://images.gutefrage.net/media/user/JanMarcel01/1545064833528_nmmslarge__96_96_1728_1728_1530d37dedc00fac79f60049c3b6a4db.jpg?v=1545064834000)
![](https://images.gutefrage.net/media/user/JanMarcel01/1545064833528_nmmslarge__96_96_1728_1728_1530d37dedc00fac79f60049c3b6a4db.jpg?v=1545064834000)
Wobei nicht alles statisch sein kann, gibt manchmal Gründe dafür
Das ist ein Tutorial von einem Jugendlichen für einen Minecraft Client ^^