2017-08-29 1 views
0

Also zuerst dachte ich, das war eine dumme Frage, aber als ich diese Umsetzung dieser Klasse dachte ich erkannte ich Vielleicht ist das falsch oder es ist komplizierter als ich dachte. Ich weiß auch nicht, ob ich die richtige Verwendung von Enums vollständig verstehe. Hier ist, was ich tun möchte:Verwenden von Enums innerhalb einer Klasse, die auch eine Klasse enthält, die enums hat ....... Ich weiß, aber überprüfen Sie es

Ich habe eine Klasse von Wettbewerbern. Ein Konkurrent hat eine Alterskategorie, die nur 1 von 4 möglichen Werten sein kann, also lege ich das in eine eingebettete Enum-Klasse. Hier wird es schwierig:

Jeder Wettbewerber hat 7 Kategorien/Divisionen, in denen sie durch eine begrenzte Reihe von Werten für die Klasse eingestuft werden. Zum Beispiel können sie für die Revolver-Division als "Klasse B" eingestuft werden.

Ich möchte in der Lage sein, einen Wettbewerber mit allen Werten zu erstellen, die ich den Wettbewerbsfeldern zuweise, sowie eine Liste aller Wettbewerber-Rankings für jede Division (ich verwende derzeit ein separates Objekt "Division") . Ich möchte schließlich das komplette Competitor-Objekt (Divisionen und alle) in einen Json unter Verwendung der Gson-Bibliothek analysieren können, aber ich kann mich nicht darum kümmern, ob ich mich diesem Recht nähere oder ob die Analysemethoden überhaupt in der Lage sind parse es richtig. Jede Hilfe wäre willkommen.

Hier ist mein Code:

public class Competitors { 

    private String referenceNum; 
    private String firstName; 
    private String lastName; 
    private String memberNum; 
    private boolean lady; 
    private enum Age{ 
     JUNIOR, 
     ADULT, 
     SENIOR, 
     SUPER_SENIOR; 
    } 
    private Division divisionRankings; 

} 

class Division{ 
    private String revolver; 
    private String singleStack; 
    private String production; 
    private String limited; 
    private String limited10; 
    private String open; 
    private String pistolCaliberCarbine; 

    private enum Classes{ 
     U, D, C, B, A, M, GM; 
    } 
} 

Antwort

0

Hier ist ein mögliches Modell, das gut zu JSON Karten:

public class Competitor { 

    public enum Age { 
     JUNIOR, 
     ADULT, 
     SENIOR, 
     SUPER_SENIOR; 
    } 

    public String referenceNum; 
    public String firstName; 
    public String lastName; 
    public String memberNum; 
    public boolean lady; 
    public Age age; 

    public Map<String, Ranking> divisionRankings; 
} 

public enum Ranking { 
    U, D, C, B, A, M, GM; 
} 

Sie müssen Felder öffentlich machen, wenn man sie zugänglich für die Außenwelt machen wollen (oder verwenden Sie Getter und Setter). Die Map<String, ?> wird in ein JSON-Objekt übersetzt. In Ihrem Fall wären die String-Schlüssel die Divisionsnamen.

+0

Ich werde Getter und Setter verwenden. Wie initialisiere ich die "Division" -Schlüssel beim Erstellen eines Objekts? Könnte die divisionRankings Map im Competitors-Konstruktor erstellt werden und alle Standardwerte auf "U" für (nicht klassifiziert) gesetzt werden? –

+0

Zum Beispiel ja. Oder Sie können eine leere LinkedHashMap im leeren Konstruktor erstellen und zuweisen und später Werte hinzufügen. – BladeCoder

+0

Überprüfen Sie meine neue Implementierung dieser Klasse. Bin ich auf dem richtigen Weg? Enums werfen mich aus –

Verwandte Themen