JAVA枚举类常量 调用_java枚举常量类使用

枚举作为常量类使用多种方式、前后端分离使用;为了前端 统一调用,特别使用了接口以及枚举反射,将枚举工具类作为标签开放于前端;保证多个枚举常量类,不用建立一个枚举类处理。

如果后台一般使用可以使用枚举里面自定义静态方法,当然一般情况下使用不到,如果需要最好各自将需用的枚举类里面自定义方法使用。保证一定的效率性。

如果不想使用反射的小伙伴,可将所有的状态类加入一个枚举类;也可使用多个枚举类;将枚举类作为标签提供于前端使用。

/*

* @Description TODO 枚举接口类

* @return

* @Date 2020/6/3 10:59

* @Author yangtao

*/

public interface IStatusEnum {

Object getValue();

int getIntValue();

String getDesc();

Object getType();

}

/**

* @ClassName OrderStatus

* @Description 订单相关状态枚举

* @Author yangtao

* @Date 2020/5/28 14:58

* @Version V1.0

**/

public enum OrderStatus implements IStatusEnum{

//订单状态

Status,

Status0(0,"待付款",Status),

Status1(1,"待发货",Status),

Status2(2,"待收货",Status),

private Object value;//值

private String desc;//描述

private OrderStatus type;//类型

OrderStatus() {

}

OrderStatus(Object value, String desc, OrderStatus type) {

this.value = value;

this.desc = desc;

this.type = type;

}

public String getDesc() {

return desc;

}

public Object getValue() {

return value;

}

public int getIntValue() {

return Integer.parseInt(value.toString());

}

public String getStrValue() {

return value.toString();

}

public OrderStatus getType() {

return type;

}

/*

* @Description TODO 根据枚举常量类型 获取枚举值集合

* @param typeName 枚举类型名称

* @return java.util.Map

* @Date 2020/6/3 11:09

* @Author yangtao

*/

public static Map findEnumList(OrderStatus type) {

Map map = new HashMap<>();

for (OrderStatus ts : OrderStatus.values()) {

if (type.equals(ts.getType())) {

map.put(ts.getValue().toString(), ts.getDesc());

}

}

//第二种使用EnumSet

// EnumSet currEnumSet = EnumSet.allOf(OrderStatus.class);

// for (OrderStatus ts : currEnumSet) {

// if (type.equals(ts.getType())) {

// map.put(ts.getValue().toString(), ts.getDesc());

// }

// }

return map;

}

/*

* @Description TODO 根据类型和值获取描述

* @param type 类型

* @param value 值

* @return String

* @Date 2020/6/3 14:01

* @Author yangtao

*/

public static String findEnumDescByValue(OrderStatus type, Object value){

String desc = "";

for (OrderStatus ts : OrderStatus.values()) {

if(type.equals(ts.getType())&&ts.getValue().toString().equals(value.toString())){

desc = ts.getDesc();

break;

}

}

return desc;

}

}

import java.lang.annotation.RetentionPolicy;

import java.lang.reflect.Method;

import java.util.HashMap;

import java.util.Map;

/*

* @Description TODO 订单相关状态静态工具类

* @return

* @Date 2020/5/28 15:27

* @Author yangtao

*/

public class StatusEnumUtil {

private static final String packageName = "com.enums.";

/*

* @Description TODO 反射获取枚举接口

* @param className 枚举名称

* @return IStatusEnum[]

* @Date 2020/6/3 11:04

* @Author yangtao

*/

private static IStatusEnum[] getEnumValues(String className){

try {

//这里的typeName就是枚举对象的名称,是需要写全路径的,注意小数点别少写了

Class> c = Class.forName(packageName+ className);

//Class.getEnumConstants() 返回类中声明的枚举实例 即:枚举对象.values();

return (IStatusEnum[]) c.getEnumConstants();

//第二种通过method获得枚举的遍历方法 即:枚举对象.values()

// Method method = c.getMethod("values");

// return (IStatusEnum[]) method.invoke(null);

} catch (Exception e) {

e.printStackTrace();

System.out.println("枚举类不存在");

}

return null;

}

/*

* @Description TODO 根据枚举常量类型 获取枚举值集合

* @param className 枚举类名

* @param typeName 枚举类型名称

* @return java.util.Map

* @Date 2020/6/3 11:09

* @Author yangtao

*/

public static Map findEnumList(String className,String typeName) {

Map map = new HashMap<>();

IStatusEnum inter[] = getEnumValues(className);

if(inter!=null && inter.length>0){

for (IStatusEnum o : inter) {

if(o.getType()!=null && typeName.equals(o.getType().toString())) {

map.put(o.getValue(), o.getDesc());

System.out.println(o.getDesc()+o.getValue()+o.getType());

}

}

}

return map;

}

/*

* @Description TODO 根据枚举常量类型和枚举值 获取描述

* @param className 枚举类名

* @param typeName 枚举类型名称

* @param value 枚举值

* @Date 2020/6/3 11:16

* @Author yangtao

*/

public static String findEnumDescByValue(String className,String typeName,Object value){

String desc = "";

IStatusEnum inter[] = getEnumValues(className);

if(inter!=null && inter.length>0 && typeName!=null && value!=null){

for (IStatusEnum o : inter) {

if(o.getType()!=null && typeName.equals(o.getType().toString())) {

if(value.toString().equals(o.getValue().toString())) {

desc = o.getDesc();

}

}

}

}

return desc;

}

public static void main(String[] args) {

findEnumList("OrderStatus","Status");

System.out.println(findEnumDescByValue("OrderStatus","Status",3));

// OrderStatus.findEnumList(OrderStatus.Status);

// System.out.println(OrderStatus.findEnumDescByValue(OrderStatus.Status,3));

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值