在 class 中使用枚举,其中还包含具有枚举的 class ......我知道,但请检查一下

using enums within a class that also contains a class that has enums.......I know but check it out

所以起初我认为这是一个愚蠢的问题,但当我考虑这个 class' 实现时,我意识到我可能正在接近这个错误或者它比我想象的更复杂。我也不知道我是否完全理解枚举的正确用法。 这是我想要做的:

我有 class 个竞争对手。竞争对手的年龄类别只能是 4 个可能值中的 1 个,因此我将其放入嵌入式枚举 class。这就是它变得棘手的地方:

每个参赛者有 7 个 categories/divisions,他们根据一组有限的 class 值进行排名。例如,他们可能在左轮手枪师中排名 "Class B"。

我希望能够创建一个竞争对手,其中包含我分配给竞争对手字段的所有值以及所有竞争对手排名的列表(我目前正在使用一个单独的对象 "Division")对于每个部门。我希望最终能够使用 Gson 库将完整的 Competitor 对象(Divisions 和所有)解析为 Json,但是我无法确定我是否正在接近这个正确的或者解析方法是否会甚至能够正确解析它。任何帮助,将不胜感激。

这是我的代码:

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;
     }
}

这是一个可能的模型,可以很好地映射到 JSON:

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;
}

如果您想让外部世界可以访问它们(或使用 getter 和 setter),您需要创建字段 public。

Map<String, ?> 将转换为 JSON 对象;在您的情况下,字符串键将是部门名称。