gpt4 book ai didi

java - 停止 Java 枚举中的重复

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:42:21 24 4
gpt4 key购买 nike

我在 Java 类中有以下 enum:

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 属性创建一个 getter)。每次我需要这样的 Resolution enum 时,我该怎么做才能停止重复自己?理想情况下,我只想为每个 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);
}

关于java - 停止 Java 枚举中的重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6559163/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com