Java--枚举类型(枚举类型介绍 & 定义枚举类型 & 枚举类型的使用 & 枚举类型的注意事项 & 遍历枚举项)

Posted Z && Y

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java--枚举类型(枚举类型介绍 & 定义枚举类型 & 枚举类型的使用 & 枚举类型的注意事项 & 遍历枚举项)相关的知识,希望对你有一定的参考价值。

01: Java–枚举类型(枚举类型介绍 & 定义枚举类型 & 枚举类型的使用 & 枚举类型的注意事项 & 遍历枚举项)

02: Java–枚举类型(枚举类型实现接口 & 枚举类型之间的比较 & 枚举类型用于switch语句)

1. 枚举类型

  • 枚举类型的主要作用就是管理常量

1.1 大量使用常量来表示数据存在以下问题:

示例:

    public static final String WEI_XIN = "weixin";
    public static final String WEI_XIN_URL = "https://weixin.qq.com/";
    public static final String ZHI_FU_BAO = "zhifubao";
    public static final String ZHI_FU_BAO_URL = "https://www.alipay.com/";

问题:

  1. 代码不够简介
  2. 不能很好的对数据进行分类,支付类型和支付接口地址靠人工通过命名关联在一起容易出错,常量越多越不方便管理。对于大型项目的开发类似的配置有很多,如果有一种简洁、分类配置常量的方式将会大大提高我们的生产效率。

1.2 枚举类型介绍


1.3 定义枚举类型

PayEnum.java

package character1;

/**
 * MethodName: PayEnum
 * Description: 支付参数的枚举类型
 */
public enum PayEnum {
    /*
    枚举项,采用全部大写的方式命名
    枚举项就是一个常量对象(内存地址不变的对象),可以在定义的时候调用构造方法

    不加括号WEI_XIN_PAY 或者 WEI_XIN_PAY() 表示调用无参构造方法
     */
    WEI_XIN_PAY("weixin", "https://weixin.qq.com/"),
    ZHI_FU_BAO_PAY("zhifubao", "https://www.alipay.com/");

    private String payName;// 支付名称
    private String payUrl;// 支付地址

    //    定义构造方法, 枚举类型的构造方法是private
    private PayEnum(String payName, String payUrl) {
        this.payName = payName;
        this.payUrl = payUrl;
    }

    //    get/set方法
    public String getPayName() {
        return payName;
    }

    public void setPayName(String payName) {
        this.payName = payName;
    }

    public String getPayUrl() {
        return payUrl;
    }

    public void setPayUrl(String payUrl) {
        this.payUrl = payUrl;
    }
}

小结:

相比较于这种方式

```java
    public static final String WEI_XIN = "weixin";
    public static final String WEI_XIN_URL = "https://weixin.qq.com/";
    public static final String ZHI_FU_BAO = "zhifubao";
    public static final String ZHI_FU_BAO_URL = "https://www.alipay.com/";

``
上面的枚举类型看着就舒服多了。


1.4 枚举类型的使用

    public static void main(String[] args) {
        System.out.println(PayEnum.WEI_XIN_PAY.getPayName());
        System.out.println(PayEnum.WEI_XIN_PAY.getPayUrl());
    }


1.5 枚举类型的注意事项

  • 每个枚举类型都继承java.lang.Enum,所以枚举类型不可以再继承其他类型。
  • 枚举项就是枚举类型的对象(实例),一般使用大写字母加下划线(和常量命类似),一个枚举项表示一个常量项,多个枚举类型之间使用逗号分隔。
  • 枚举类型的构造方法必须使用private私有:构造方法为private目的就是为了不让你用new来创建该类型的对象,而枚举类型的个数必须是确定的(根据枚举体的作用定义)所以它必须是private。
  • 通过"枚举类名.枚举项名称"取访问指定的枚举项。

1.6 遍历枚举项

第一种方式: 通过反射

    public static void main(String[] args) {
        System.out.println("第一种通过反射");
        Class clz = PayEnum.class;
        for (Object obj : clz.getEnumConstants()) {
            System.out.println(obj);
            System.out.println(((PayEnum) obj).getPayName());
            System.out.println(((PayEnum) obj).getPayUrl());
            System.out.println("---------------------------");
        }
    }

第二种通过枚举静态方法values():

    public static void main(String[] args) {
        System.out.println("第二种通过枚举静态方法values()");
        for (PayEnum rate : PayEnum.values()) {
            System.out.println(rate);
            System.out.println(rate.getPayName());
            System.out.println(rate.getPayUrl());
            System.out.println("-------------------------------");
        }
    }

以上是关于Java--枚举类型(枚举类型介绍 & 定义枚举类型 & 枚举类型的使用 & 枚举类型的注意事项 & 遍历枚举项)的主要内容,如果未能解决你的问题,请参考以下文章

在 C 中指定枚举类型的大小

java 枚举类型enum

Java5 枚举类型使用总结

[JAVA]枚举类型的应用

enum在java中是啥意思

枚举类型的变量如何使用?