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

停止Java枚举中的重复

傅穆冉
2023-03-14
问题内容

enum在Java类中具有以下内容:

public enum Resolution {
    RES_32 (32),
    RES_64 (64);
    private final int asInt;
    private Resolution(int asInt) {
        this.asInt = asInt;
    }
};

我有更多需要类的类enum,它们具有相同的asInt属性和相同的构造函数,但具有不同的常量。因此,在另一堂课中,我需要以下内容enum

public enum Resolution {
    RES_32 (32),
    RES_64 (64),
    RES_128 (128);
    private final int asInt;
    private Resolution(int asInt) {
        this.asInt = asInt;
    }
};

如果这是一个类,则可以使用继承来不重复构造函数中的代码(并且可能会对该asInt属性进行获取)。为了在每次需要这种重复时不再重复自己,我该Resolution
enum怎么办?理想情况下,我只想为each指定常量Resolution,并保留构造函数和属性。


问题答案:

EnumSet在这种情况下可能会有所帮助。鉴于以下情况,

public enum Resolution {

    RES_32(32),
    RES_64(64),
    RES_128(128),
    RES_256(256);

    public static Set<Resolution> deluxe = EnumSet.allOf(Resolution.class);
    public static Set<Resolution> typical = EnumSet.range(RES_64, RES_128);
    public static Set<Resolution> ecomomy = EnumSet.of(RES_32);

    private final int asInt;

    private Resolution(int asInt) {
        this.asInt = asInt;
    }
};

如下所示,可以使用适当命名的集合。

for (Resolution r : Resolution.deluxe) {
    System.out.println(r.asInt);
}


 类似资料:
  • 问题内容: 这个问题已经在这里有了答案 : 10年前关闭。 复制: 在Python中实现“枚举”的最佳方法是什么? 在python中进行枚举的公认方法是什么? 例如,目前我正在编写游戏,希望能够将“上”,“下”,“左”和“右”移动。我使用字符串是因为我还没有弄清楚枚举在python中是如何工作的,所以我的逻辑充满了这样的东西: 我想用类似的东西代替 问题答案:

  • 问题内容: 我有一个枚举的类对象(我有一个),我需要获取此枚举表示的枚举值的列表。该静态函数有我需要什么,但我不知道怎么去从类对象访问它。 问题答案:

  • 问题内容: 通过阅读SCJP书籍,我在第1章“自测”中发现了类似的内容: 注意:代码编译正常。我不明白的是为什么我们可以从变量访问DOG,CAT或FISH常量。我认为(并且也写在书中)DOG,FISH,CAT是常量,其实现方式类似于。 所以,如果它们确实是静态的,为什么我们可以从中访问它们呢?最后一行是我熟悉的方式。 问题答案: 写作 和写作一样。也就是说,编译器将用其编译时类型Animal替换变

  • 为什么我在浏览java时看不到

  • 主要内容:声明枚举,枚举类,为枚举添加方法,EnumMap 与 EnumSet枚举是一个被命名的整型常数的集合,用于声明一组带标识符的常数。枚举在曰常生活中很常见,例如一个人的性别只能是“男”或者“女”,一周的星期只能是 7 天中的一个等。类似这种当一个变量有几种固定可能的取值时,就可以将它定义为枚举类型。 在 JDK 1.5 之前没有枚举类型,那时候一般用接口常量来替代。而使用 Java 枚举类型 enum 可以更贴近地表示这种常量。 声明枚举 声明枚举时必须使用 enu

  • 谁能解释一下 和 我经常使用前一个示例(可能太频繁了,没有足够的封装),但我从未使用过第二个示例。 谢啦 枚举