gpt4 book ai didi

Java 枚举返回 Int

转载 作者:IT老高 更新时间:2023-10-28 13:52:24 25 4
gpt4 key购买 nike

我在声明枚举时遇到问题。我要创建的是“DownloadType”的枚举,其中有 3 种下载类型(AUDIO、VIDEO、AUDIO_AND_VIDEO)。

我实现的代码如下:

private enum DownloadType {
AUDIO(0), VIDEO(1), AUDIO_AND_VIDEO(2);
private final int value;

private DownloadType(int value) {
this.value = value;
}
}

如果我像这样使用它,这会很好:

DownloadType.AUDIO_AND_VIDEO.value;

但是,我希望这样我就不必询问“值(value)”。我可能弄错了,但这是几个类在 Java 中的工作方式,例如 Font,例如设置字体样式,您使用:

Font.PLAIN

它返回一个 int 值,我们不使用:

Font.PLAIN.value

最佳答案

Font.PLAIN 不是一个枚举。它只是一个 int。如果您需要从枚举中取出值,则无法避免调用方法或使用 .value,因为枚举实际上是其自身类型的对象,而不是原语。

如果你真的只需要一个int并且你已经接受类型安全丢失了,用户可能会向你的API传递无效值,你也可以将这些常量定义为 int:

public final class DownloadType {
public static final int AUDIO = 0;
public static final int VIDEO = 1;
public static final int AUDIO_AND_VIDEO = 2;

// If you have only static members and want to simulate a static
// class in Java, then you can make the constructor private.
private DownloadType() {}
}

顺便说一下,value字段其实是多余的,因为还有一个.ordinal()方法,所以你可以定义enum 作为:

enum DownloadType { AUDIO, VIDEO, AUDIO_AND_VIDEO }

并使用

获得“值(value)”
DownloadType.AUDIO_AND_VIDEO.ordinal()

编辑:更正了代码。Java 中不允许使用 static class。见 this SO answer关于如何在 Java 中定义静态类的解释和详细信息。

关于Java 枚举返回 Int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13792110/

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