当前位置: 首页 > 面试题库 >

如何将枚举与分组和子分组层次结构/嵌套一起使用

仲和韵
2023-03-14
问题内容

我有一个enum“班级”,称为Example

enum Example {
//enums belonging to group A:
   enumA1,
   enumA2,
   enumA3,
//enums belonging to group B:
   enumB1,
   enumB2,
   enumB3,
//enums belonging to group C:
   enumC1,
   enumC2,
   enumC3;
}

对于我的项目而言,它们所涉及的所有枚举都非常重要Example(因为这是类的构造函数中的一个参数)。

我如何使用enum层次结构/嵌套来实现以下目的:

  • 一种测试an enum是否属于A,B或C组的方法。例如,类似于Example.enumA1.isGroupBelonging(Group.A)isGroupBelonging(Example.enumA1,Group.A)将是返回true的公共方法。

  • 能够做同样的事情组的子组ABC。例如,A组可能有子组abc。然后,我想要一个做某事的方法,例如Example.enumA1.isSubGroupBelonging(SubGroup.a)which public boolean

  • 一种无需所有复杂enum名称即可完成所有代码的方法。例如,最好能够Example.enumA1在我的其他所有类中进行引用,而无需使用诸如Example.enumA1(Group.A,SubGroup.a)Example.enumA1.Group.A.SubGroup.a


问题答案:

我将使用一个非常简单的枚举构造函数,该构造函数将相应的组与枚举值相关联:

public enum Example {

    ENUM_A1 (Group.A),
    ENUM_A2 (Group.A),
    ENUM_A3 (Group.A),

    ENUM_B1 (Group.B),
    ENUM_B2 (Group.B),
    ENUM_B3 (Group.B),

    ENUM_C1 (Group.C),
    ENUM_C2 (Group.C),
    ENUM_C3 (Group.C);

    private Group group;

    Example(Group group) {
        this.group = group;
    }

    public boolean isInGroup(Group group) {
        return this.group == group;
    }

    public enum Group {
        A,
        B,
        C;
    }
}

用法:

import static Example.*;
import Example.Group;
...

ENUM_A1.isInGroup(Group.A);  // true
ENUM_A1.isInGroup(Group.B);  // false

要进行分组,您可以使用与示例相同的Group结构,将其Group(SubGroup ... subgroups)用作构造函数并EnumSet<SubGroup>包含分组。



 类似资料:
  • 问题内容: 我在表“ 示例* ” 中有一个列名称“ 父级” 和“ 子级” ,以下是表数据 * 如果我将输入设为 100,那么 我应该得到的结果为 100,101,102,103。 由于 100- > 101-> 102-> 103 ,而且如果我将输入设为 102, 则它也将得到与上述相同的结果。 102- > 101-> 100和102-> 103 。我只需要使用存储过程来实现此目的。 以下是我正

  • Grouping Selectors 在样式表中有很多具有相同样式的元素。h1 { color:green; } h2 { color:green; } p { color:green; } 为了尽量减少代码,你可以使用分组选择器。 每个选择器用逗号分隔. 在下面的例子中,我们对以上代码使用分组选择器:h1,h2,p { color:green; } 嵌套选择器 它可能适用于选择器内部的选择器的样

  • 问题内容: 我想知道在Java中是否可以嵌套枚举。 在这里,我想做的是: 拥有一个由CAT和DOG组成的物种,将允许我访问可用CAT和DOG品种的子枚举。例如,我希望能够测试是否装有CAT或DOG,以及动物是否是PERSAN CAT或PITBULL狗。CAT和DOG品种必须是不同的枚举,即CatBreeds枚举和DogBreeds枚举。 这是我要使用的访问模式的示例: 种类: 物种 种狗 品种:

  • 问题内容: 使用MSSQL 2008和XQUERY 考虑以下存储在表中的XML: 我想将此xml分解为类似 等等。 注意:在此示例中,每个ParentElement可能有许多ChildElements。我一直在尝试使用xquery,但是我无法像这样浏览复杂的元素。 基本上,我正尝试与FOR XML对表进行完全相反的操作,只是要使用一组更为简单的数据。 关于下一步或如何实现此目标的任何想法? 谢谢

  • 我不确定我是否过度工程化了,但我正在考虑创建一个枚举,其中包含一个枚举列表作为它的值,从中我可以得到它的值。 我无法确定枚举的类型,以便正确地将值数组筛选到正确的枚举。例如,我可以用轻松地获得US枚举。我遇到的困难是从该数组中获得正确的值。我尝试比较名称,

  • 问题内容: 更新: 感谢所有提供帮助的人-这个答案的答案在于我在更复杂的代码中没有注意到的内容以及对Java5协变量返回类型不了解的内容。 原始帖子: 今天早上我一直在玩一些东西。虽然我知道我 可以用 不同的方式解决整个问题,但我发现自己一直迷恋于弄清楚为什么它没有按我预期的那样工作。在花了一些时间阅读这些内容之后,我发现我离理解还很近,因此我将其作为一个问题来看看我是否只是愚蠢,或者是否真的有我