Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Data data = new Data("nickname", "null", "null", "null", "null", new ArrayList<>(), new ArrayList<>(), "Nickname is already taken");
userSession.getBasicRemote().sendText(gson.toJson(data));
Es funktioniert zwar aber ich finde es ziemlich umständlich, da ich in jedem Parameter null oder leere Arrays eingeben muss. Gibt es da eine elegantere Lösung?
Also ganz trivial wäre:
Erzeuge auch einen Konstruktor ohne (oder nur mit den immer gegebenen Parametern) und den kannst Du dann nutzen und wenn noch etwas mehr gesetzt werden soll, nutzt Du noch einen Setter.
Man könnte auch generell mehrere Konstruktoren anbieten, aber das wird in Java schnell unübersichtlich. (Da sind dann Sprachen wie Kotlin etwas besser, da man hier dann default Werte hinterlegen kann, so dass man nicht alles angeben muss)
Builder-Pattern findet man dann in Java öfters. Das hat @mihe7 ja jetzt schon erwähnt.
Oder allerdings nicht eine Klasse für alles nutzen, sondern Klassen für die einzelnen Events, die dann auch nur die benötigten Daten enthalten.
Eine Nachricht braucht sicherlich andere Parameter als ein Logout-Event.
Also könnte ich nicht z.B. 1 Parameter für die Methode Data geben und das wäre ein Array? Dort könnte ich dann überprüfen welche Keys und Values im Array vorhanden sind.
Also könnte ich nicht z.B. 1 Parameter für die Methode Data geben und das wäre ein Array? Dort könnte ich dann überprüfen welche Keys und Values im Array vorhanden sind.
@mrBrown, hat mich nur Wunder genommen. Ansonsten finde ich auch, dass hierbei mehrere Klasse vielleicht sinnvoller wären. Müssen es denn unbedingt mehrere Klassen sein oder kann ich auch in derselben Klasse einfach mehrere Methoden hinzufügen?
Ansonsten finde ich auch, dass hierbei mehrere Klasse vielleicht sinnvoller wären. Müssen es denn unbedingt mehrere Klassen sein oder kann ich auch in derselben Klasse einfach mehrere Methoden hinzufügen?
Die Frage wäre für mich, ob diese Klasse irgendeinen tieferen Sinn hat oder es nur darum geht, an unterschiedlichen Stellen unterschiedliche JSON-Texte zu erzeugen.
Wenn ich es richtig sehe, dann dient die Klasse ja lediglich als dummer Datencontainer, um vom JSON-Text zu abstrahieren. Dann kann man das aber auch sehr abstrakt halten, z. B. in Form von Key-Value-Paaren.