gpt4 book ai didi

java - 这是使用 Enum 的正确方法吗?

转载 作者:行者123 更新时间:2023-11-30 10:36:55 25 4
gpt4 key购买 nike

所以我有一个名为 optionType 的字段,我希望它能够采用与特定选项对应的 4 个不同的整数值。例如 optionType = 0 表示用户希望以某种方式处理某事,optionType = 1 表示另一种方式等。

但是数字本身没有意义,所以我想在类中定义常量。

public class MyClass {
public static final int OPTION_TYPE_DO_THIS = 0;
public static final int OPTION_TYPE_DO_THAT = 1;
public static final int OPTION_TYPE_DO_SOMETHING_ELSE = 2;
public static final int OPTION_TYPE_DO_COOL_THING = 3;
private int optionType;

....

这样定义所有常量是正常的还是使用像这样的枚举更好

public enum OPTION_TYPE {DO_THIS, DO_THAT, DO_SOMETHING_ELSE, DO_COOL_THING};

或者我应该以某种方式改用 Enum 吗?

最佳答案

关键点更多的是“如何在运行时使用这些信息”。你看,如果你开始考虑编写如下代码:

switch(someEnum) {
case DO_THIS: ...
case DO_THAT:

...那么你已经走错方向了!

重点是:人们常常认为枚举(或它们的更底层的数字常量表兄弟)是表达此类设计的好方法。

但这实际上会导致一些问题。通常,更好的、“更面向对象”的方式是使用一些带有特定子类的抽象基类;换句话说:多态性!

编辑:只是为了更清楚地说明......对枚举的“单一”切换并不是真正的问题。但是很多时候,人们最终会在代码中的许多地方切换他们的枚举。当您创建额外的枚举常量时,所有这些地方都可能需要更新。我的一个同事称之为“枚举陷阱”。

关于java - 这是使用 Enum 的正确方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40387529/

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