Java枚举(enum)类说明

枚举类是我们JDK1.5之后的新特性,枚举类其实和普通Java类一样,只不过它继承java.lang.Enum类,是引用数据类型。至于枚举类的作用,说直白点,就是为了让我们更好的维护项目中的常量,代码更加简洁。

原来我们定义常量的方式

复制代码
public class PayFactory {

    public static final String WEIXINPAYTYPE = "weixin";
    public static final String WEINXINPAYURL = "https://api.mch.weixin.qq.ocn/pay/";
    public static final String ALIPAYTYPE = "ali";
    public static final String ALIPAYURL = "https://openapi.alipay.com/";
    public static final String UNIONPAYTYPE = "union";
    public static final String UNIONPAYURL = "https://gateway.95516.com/gateway/api";

}
复制代码

枚举类定义

复制代码
/**
 * 定义枚举类要使用enum关键字
 * public enum 枚举类名 {
 *     枚举项1, 枚举项2, 枚举项3....;
 *     构造方法
 *     成员变量
 *     成员方法
 * }
 */
public enum PayEnum {

    WEIXINPAY("weixin","https://api.mch.weixin.qq.ocn/pay/"),
    ALIPAY("ali","https://openapi.alipay.com/"),
    UNIONPAY("union","https://gateway.95516.com/gateway/api");

    //枚举项其实就是一个个对象,下列内容定义的就是枚举项的属性
    private String name;
    private String payUrl;

    //枚举类的构造方法只能是private
    private PayEnum(){

    }
    private PayEnum(String name, String payUrl){
        this.name = name;
        this.payUrl = payUrl;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPayUrl() {
        return payUrl;
    }

    public void setPayUrl(String payUrl) {
        this.payUrl = payUrl;
    }
}
复制代码

并且我们的枚举类通常会去配合我们的接口使用

public interface PayEnum {
    public String getName();
    public String getPayUrl();
}

记得给我们的实现类加上implements

引用枚举类

复制代码
public class PayService {

    public static void main(String[] args) {
        System.out.println(PayEnumImpl.UNIONPAY.getName());
        System.out.println(PayEnumImpl.UNIONPAY.getPayUrl());

        //枚举项之间的比较是使用==进行比较的
        if (PayEnumImpl.ALIPAY.getName() == "ali"){
            System.out.println("true");
        }

    }
}
复制代码

 

posted @   RFAA  阅读(208)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示