温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java 枚举 switch的用法

发布时间:2020-06-30 21:48:02 来源:网络 阅读:1815 作者:沙漏半杯 栏目:编程语言

因有个判断需要处理不同系统类型跳转不同 系统。 考虑用switch + 枚举的方式。  具体使用案例如下:


package com.b2b.common.constant;

 

import com.base.utils.base.StringUtils;

 

/**

 * 系统类型枚举

 * @author shijing

 */

public enum SystemType {

 

    ERP(0,"ERP"),

    ORDER_PLATFORM(1,"订货平台"),

    PERSONAL(2,"个人中心系统"),

    SHOP_MALL(3,"商城"),

    PARTNER(4,"伙伴系统");

 

    private int value;

    private String desc;

 

    SystemType(int value ,String desc) {

        this.value = value;

        this.desc = desc;

    }

 

    public int getValue() {

        return value;

    }

 

    public String getDesc() {

        return desc;

    }

 

    /**

     * 通过value取枚举

     * @param value

     * @return

     */

    public static SystemType getTypeByValue(String value){

        if (StringUtils.isNull(value)){

            return null;

        }

        int valueKey = Integer.parseInt(value);

        for (SystemType enums : SystemType.values()) {

            if (enums.getValue() == valueKey) {

                return enums;

            }

        }

        return null;

    }

 

    /**

     * 通过value取描述

     * @param value

     * @return

     */

    public static String getDescByValue(int value) {

        for (SystemType enums : SystemType.values()) {

            if (enums.getValue() == value) {

                return enums.getDesc();

            }

        }

        return "";

    }

 

}

 


 switch+枚举的使用案例:


/**

     * 区分不同系统类型,登录不同系统

     * @author shijing

     * @param paramMap

     * @param checkData

     * @return

     * @throws Exception

     */

    private ErpResponse getLoginResponse(Map<String, Object> paramMap, ErpResponse checkData) throws Exception {

        ErpResponse loginData = null;

        Map<String,Object> user= (Map<String, Object>) checkData.getData();

        //获取user的系统类型,然后区分是哪个系统实例用户登录

        String sysBaseType = (String) user.get("sys_base_type");

        SystemType systemType = SystemType.getTypeByValue(sysBaseType);

        switch(systemType){

            case ERP:

                erpLogin((String) user.get("user_id"));

                loginData.setData(user);

                break;

            case ORDER_PLATFORM:

                //订货平台

                orderPlatformLoginByCheck(paramMap);

                loginData.setData(user);

                break;

            case PERSONAL:

                //个人中心

                loginData = personalLogin(user);

                break;

            default:

                LOGGER.info("系统类型不满足");

                break;

        }

        return  loginData;

    }

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI