Java枚举switch的用法

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

创新互联公司 - 雅安移动机房,四川服务器租用,成都服务器租用,四川网通托管,绵阳服务器托管,德阳服务器托管,遂宁服务器托管,绵阳服务器托管,四川云主机,成都云主机,西南云主机,雅安移动机房,西南服务器托管,四川/成都大带宽,成都机柜租用,四川老牌IDC服务商

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 paramMap, ErpResponse checkData) throws Exception {

        ErpResponse loginData = null;

        Map user= (Map) 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;

    }


网站名称:Java枚举switch的用法
当前链接:http://ybzwz.com/article/gscccg.html