枚举类工具

简介: 枚举类是程序中常用的一种类型,当经常面对说明与标识混乱的情况。在此记录一个枚举类的写法,方便标识与说明的绑定基类:import java.util.ArrayList;import java.util.

枚举类是程序中常用的一种类型,当经常面对说明与标识混乱的情况。在此记录一个枚举类的写法,方便标识与说明的绑定

基类:

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public abstract class StandardType {
    private String key;
    private String title;

    public StandardType(String key, String title) {
        this.title = title;
        this.key = key;
    }

    public String getTitle() {
        return title;
    }

    public static String getTitle(StandardType[] values, String key) {
        StandardType val = StandardType.getEnum(values, key);
        if (val == null) {
            return null;
        } else {
            return val.getTitle();
        }
    }

    public String getKey() {
        return key;
    }

    public static String getKey(StandardType[] values, String title) {
        for (StandardType val : values) {
            if (val.getTitle().equals(title)) {
                return val.getKey();
            }
        }
        return null;
    }

    public static StandardType getEnum(StandardType[] values, String key) {
        for (StandardType val : values) {
            if (val.getKey().equals(key)) {
                return val;
            }
        }
        return null;
    }

    public String toString() {
        return key;
    }

    public boolean equals(StandardType type) {
        if (type == null) {
            return false;
        }
        return this.key.equals(type.getKey());
    }

    /**
     * get value options based on values
     * 
     * @param values
     * @return
     */
    public static List<Map<String, String>> getOpts(StandardType[] values) {
        List<Map<String, String>> opts = new ArrayList<Map<String, String>>();
        Map<String, String> opt = null;
        for (StandardType val : values) {
            opt = new HashMap<String, String>();
            opt.put("key", val.getKey());
            opt.put("title", val.getTitle());
            opts.add(opt);
        }
        return opts;
    }

    /**
     * get value options based on values(Fuzzy query)
     * 
     * @param values
     * @return
     */
    public static List<Map<String, String>> getSimilarOpts(StandardType[] values, String input) {
        List<Map<String, String>> opts = new ArrayList<Map<String, String>>();
        Map<String, String> opt = null;
        for (StandardType val : values) {
            if (val.getTitle().contains(input)) {
                opt = new HashMap<String, String>();
                opt.put("key", val.getKey());
                opt.put("title", val.getTitle());
                opts.add(opt);
            }
        }
        return opts;
    }
}

枚举类:

    /**
     * 支付方式
     */
    public static class PayWay extends StandardType {
        public final static PayWay WeChatPay = new PayWay("WeChatPay", "微信支付");
        public final static PayWay AliPay = new PayWay("AliPay", "支付宝支付");
        public final static PayWay UnionPay = new PayWay("UnionPay", "银联支付");
        public final static PayWay CashPay = new PayWay("CashPay", "现金支付");
        public final static PayWay[] values = { WeChatPay, AliPay, UnionPay, CashPay };

        public PayWay(String key, String title) {
            super(key, title);
        }
    }

使用:

    public static void main(String[] args) {
        PayWay.AliPay.toString();// AliPay
        // dome1
        StandardType patWay = PayWay.getEnum(PayWay.values, "AliPay");
        patWay.getKey();// AliPay
        patWay.getTitle();// 支付宝支付
        // dome2
        PayWay.getKey(PayWay.values, "支付宝支付");// AliPay
        PayWay.getTitle(PayWay.values, "AliPay");// 支付宝支付
        // dome3
        List<Map<String, String>> listMap1 = PayWay.getOpts(PayWay.values);//所有map
        List<Map<String, String>> listMap2 = PayWay.getSimilarOpts(PayWay.values, "支");//一条支付宝的map
    }

 

遗失的拂晓
目录
打赏
0
0
0
0
41
分享
相关文章
构建高效运维体系:从监控到自动化的实践之路
【10月更文挑战第9天】 在当今信息技术飞速发展的时代,运维作为保障系统稳定性与效率的关键角色,正面临前所未有的挑战。本文将探讨如何通过构建一个高效的运维体系来应对这些挑战,包括监控系统的搭建、自动化工具的应用以及故障应急处理机制的制定。我们将结合具体案例,分析这些措施如何帮助提升系统的可靠性和运维团队的工作效率。
151 1
服务器数据恢复—异常断电导致存储不可用的数据恢复案例
服务器存储数据恢复环境: 一台存储中有一组由12块SAS硬盘组建的RAID6磁盘阵列,划分为一个卷,分配给几台Vmware ESXI主机做共享存储。该卷中存放了大量Windows虚拟机,这些虚拟机系统盘是统一大小,数据盘大小不确定,数据盘是精简模式。 服务器存储故障: 机房断电导致服务器存储异常关机,加电后存储无法使用。
服务器数据恢复—异常断电导致存储不可用的数据恢复案例
「微服务」这10道Consul面试题值得一看
Consul 是一个强大的分布式服务发现和配置管理工具,用于服务注册、健康检查、负载均衡、故障恢复等。它支持多数据中心和多种协议,提供服务发现、健康检查、KV 存储和事件通知功能。服务注册与健康检查由 Agent 实现,负载均衡通过 Service Mesh 实现。尽管 Consul 提供诸多优点,如多数据中心支持和高可用性,但其学习和部署成本较高,适合大型项目,对于小型或初学者可能过于复杂。在使用时需根据实际需求和资源考虑。
162 3
Python3,2段代码,给pdf文件添加水印,原来watermark还可以这么玩。
Python3,2段代码,给pdf文件添加水印,原来watermark还可以这么玩。
34888 1
Python3,2段代码,给pdf文件添加水印,原来watermark还可以这么玩。
Docker部署selenium程序-从本地到云服务器-详细步骤
Docker部署selenium程序-从本地到云服务器-详细步骤
626 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问