【问题标题】:How to use enums to define constant value groups如何使用枚举来定义常量值组
【发布时间】:2014-07-28 04:10:46
【问题描述】:

我使用接口访问项目常量 这是我的界面

public interface ConstantValues {

    interface PaymentType   {
        public static final String CREDIT_CUSTOMER = "credit";
        public static final String CASH_CUSTOMER = "cash";
    }

    interface PaymentMethode    {
        public static final String CREDIT_CARD = "creditcard";
        public static final String VISA_CARD = "visacard";
        public static final String MASTER_CARD = "mastercard";
    }

}

我从下面的 java 类中访问这些值

 ConstantValues.PaymentType.CREDIT_CUSTOMER

 or

 ConstantValues.PaymentType.VISA_CARD

但我想知道如何使用枚举来执行此操作,因为使用 定义常量的接口是不好的做法可以取悦任何人 告诉我如何使用枚举以及如何从 java 类中访问它?

【问题讨论】:

  • 你知道如何声明enum 及其常量吗?除此之外,完全一样。
  • +1 用于识别它是不好的做法。很多人仍然这样做
  • 我对 java 完全陌生,我没用过枚举
  • 理解为什么这是一种不好的做法很重要。当您将常量具体化为Enum 时,您将在整个代码库中为其提供上下文,您拥有一个已知且记录在案的类型的实例,该实例具有特定的用途。使用字符串常量,每次使用时都必须为其添加上下文。

标签: java jakarta-ee interface enums constants


【解决方案1】:

给你:

enum PaymentType   {
    CREDIT_CUSTOMER,
    CASH_CUSTOMER;
}

enum PaymentMethod    {
    CREDIT_CARD,
    VISA_CARD,
    MASTER_CARD;
}

像这样使用它:

PaymentMethod meth = PaymentMethod.VISA_CARD;

等等

【讨论】:

  • 你如何定义这些常量的值?
  • 枚举的重点是你不必做那种事情。您可以使用 == 测试是否相等,就像参考比较一样。
  • @user2567005 常量就是值。
  • 感谢队友,但我已将枚举声明放在一个类中,这样我就不必创建多个枚举。不好吗?
  • 不,应该没问题。
【解决方案2】:
public class Enums {
    public enum Test {
        FIRST,
        SECOND,
        THIRD
    }

    public enum Test2 {
        FIRST("first"),
        SECOND("second"),
        THIRD("third");

        private final String value;

        Test2(String value) {
            this.value = value;
        }
    }

    public static void main(String[] args) {
        System.out.println(Enums.Test.FIRST);
        System.out.println(Enums.Test2.FIRST.value);
    }
}

【讨论】:

  • 你如何定义枚举测试的值?
  • 它们本质上是值,您可以像这样使用它们:Test t = Test.FIRST 或 String s = Test.FIRST.name()
猜你喜欢
  • 2013-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-09
  • 2018-03-16
  • 2014-06-29
相关资源
最近更新 更多