获得当前工程下的所有枚举值的文档

1:Controller

@Controller
@RequestMapping("/api/help")
@Api("帮助中心")
public class HelpDocController extends MasterBaseApiController {
   /**
    * 打开测试文档
    */
   @RequestMapping(value = "jacka/index")
   public String open() {
      return "api_url";
   }
   /**
    * 获得当前工程的所有枚举值
    */
   @RequestMapping(value = "enums",method = RequestMethod.GET)
   @ResponseBody
   public Map<String,Object> enumsDoc() {
      return EnumUtil.getAllEnumsInPackage("com.yuntu.master.common.enums");
   }
}

2:EnuUtil

package com.yuntu.master.common.util;

import com.google.common.collect.Maps;
import org.reflections.Reflections;

import java.util.Arrays;
import java.util.Map;
import java.util.Set;

/**
 * Created by jack on 5/15/16.
 */
public class EnumUtil {
   /**
    * 获得指定包下面的枚举类
    *
    * @param packageName
    * @return
    */
   public static Set<Class<? extends Enum>> getClassesInPackage(String packageName) {
      Reflections reflections = new Reflections(packageName);
      Set<Class<? extends Enum>> allClasses = reflections.getSubTypesOf(Enum.class);
      return allClasses;
   }

   /**
    * 获得指定包下面的所有的枚举类的值
    *
    * @param packageName
    * @return
    */
   public static Map<String, Object> getAllEnumsInPackage(String packageName) {
      Reflections reflections = new Reflections(packageName);
      Set<Class<? extends Enum>> allClasses = reflections.getSubTypesOf(Enum.class);

      Map<String, Object> result = Maps.newLinkedHashMap();
      allClasses.forEach(t -> {
         Map<String, Object> value = Maps.newLinkedHashMap();

         Arrays.asList(t.getEnumConstants()).forEach(c -> {
            Map<String, Object> fieldValue = Maps.newLinkedHashMap();
            Arrays.asList(c.getClass().getDeclaredFields()).stream()
                  .filter(field -> (!field.isEnumConstant()) && !"$VALUES".equals(field.getName()))
                  .forEach(field -> {
                     field.setAccessible(true);
                     try {
                        fieldValue.put(field.getName(), field.get(c));
                     } catch (IllegalAccessException e) {
                        e.printStackTrace();
                     }
                  });
            value.put(c.toString(), fieldValue);
         });

         result.put(t.getCanonicalName(), value);
      });

      return result;
   }

   public static void main(String[] args) {
      EnumUtil.getAllEnumsInPackage("com.yuntu.master.common.enums")
	      .forEach((k, v) -> System.out.println(k + "=" + v));
   }
}


3:pom

1)JDK1.8

2)添加org.reflections依赖

<dependency>
   <groupId>org.reflections</groupId>
   <artifactId>reflections</artifactId>
   <version>0.9.8</version>
</dependency>


4:效果:

com.yuntu.master.common.enums.MasterUserCustomerStatusEnum={Underway={value=1, description=进行中}, Affirm={value=2, description=已成交}, NotBuy={value=3, description=战败}}
com.yuntu.master.common.enums.MasterUserLevelEnum={FirstMaster={value=1, description=firstMaster}, SecondMaster={value=2, description=secondMaster}, Individual={value=3, description=individual}}
com.yuntu.master.common.enums.MasterInventoryStatusEnum={LittleCar={value=0, description=三台内}, HavingCar={value=1, description=充足}, NoCar={value=2, description=无库存}}
com.yuntu.master.common.enums.MasterUserTeamReportMouthEnum={Three_Month_Ago={mouthValue=3, mouthName=过去三个月, sequence=1}, Six_Month_Ago={mouthValue=6, mouthName=过去六个月, sequence=2}, Nine_Month_Ago={mouthValue=12, mouthName=过去十二个月, sequence=3}}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张振华-Jack

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值