相关文章推荐
想表白的海龟  ·  js ...·  1 年前    · 
任性的小马驹  ·  java.lang.IndexOutOfBo ...·  1 年前    · 
豁达的帽子  ·  python ...·  1 年前    · 

java中常用的枚举方法有values和valueof

valueOf方法会把一个String类型的名称转变成枚举项,也就是在枚举项中查找字面值和该参数相等的枚举项。

values是获取所有的枚举项

package HtppClient1.EnumUtil;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
import org.springframework.util.ReflectionUtils;
import com.sun.org.apache.bcel.internal.generic.IfInstruction;
enum TestEnums {
	weirenzheng(0, "0、未认证;", 16, -1, 0),
    onceTime(1, "上月支付1次及以下;", 8, 0, 1),
    towTimes(2, "上月支付1-2次", 12, 1, 2),
    threeTimes(3, "上月支付3-4次;", 16, 3, 4),
    fiveTimes(4, "上月支付5-7次", 20, 4, 7),
    sixTimes(5, "上月支付7次以上", 24, 7, Integer.MAX_VALUE);
    public int code;//排序
    public String desc;//描述
    public int score;//分值
    public int lower;//最低次数
    public int high;//最高次数
    TestEnums() {
    TestEnums(int code, String desc, int score, int lower, int high) {
        this.code = code;
        this.desc = desc;
        this.score = score;
        this.lower = lower;
        this.high = high;
    public int getCode() {
        return code;
    public String getDesc() {
        return desc;
    public int getScore() {
        return score;
    public int getLower() {
        return lower;
    public int getHigh() {
        return high;
     * 根据code返回枚举值
     * @param Code
     * @return
    public static TestEnums   getEumByCode(int Code){
    	for(TestEnums testEnums: TestEnums.values()) {
    		if(testEnums.getCode()==Code) {
    			return testEnums;
    	return null;  	
     * 根据序号获取枚举数组中的值,序号必须从0开始
     * @param key
     * @return
     * @throws IllegalAccessException
     * @throws IllegalArgumentException
     * @throws InvocationTargetException
     * @throws InstantiationException
    public static <T> List<T>   getEumByKey(int Code) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException, InstantiationException {
    	List<String> enumList=getEumValueList();
    	List<T> enumList1=new ArrayList<T>();
    	for(TestEnums testEnums: TestEnums.values()) {
    		if(testEnums.getCode()==Code) {
    			Class<?> clazz=testEnums.getClass();
    			// 获取所有常量
    	        Object object = clazz.getEnumConstants()[Code];
        	    Field[]  filedFields=clazz.getFields();    	            	        	
				for (Field field : filedFields) {   				
					field.setAccessible(true);
					Object sssObject=field.get(object);
					if(enumList.contains(field.getName())) {
						continue;
					}else {
						if(sssObject!=null)
							enumList1.add((T) sssObject);
    			return enumList1;
    	return null;
     * 获取枚举值常量列表
     * @param Code
     * @return
    public static List<String>  getEumValueList() {
    		  List<String> list=new ArrayList<String>();
    		  for(Object object:TestEnums.values()) {
					list.add(object.toString());
    		  return list;	
     * 传入方法名称  values是值 ,field是 字段mingcheng
     * @param <T>
     * @param enumType
     * @param value
     * @param field
     * @return
     * @throws Exception
    public static <T extends Enum<T>> T getEnumOnValue(Class<T> enumType, String value, String field) throws Exception {
       for (Object obj : enumType.getEnumConstants()) {
          Method m = obj.getClass().getDeclaredMethod("values", null);
          Object[] results = (Object[]) m.invoke(obj, null);
          for (Object result : results) {
             Field codeField = result.getClass().getDeclaredField(field);
             ReflectionUtils.makeAccessible(codeField);
             String fileValue = String.valueOf(ReflectionUtils.getField(codeField, result));
             if (fileValue.equals(value)) {
                return (T) result;
       return null;

test代码:

import java.util.List;
 * Hello world!
public class App 
    public static void main( String[] args ) throws Exception
    	TestEnums testEnums = TestEnums.getEnumOnValue(TestEnums.class, "1", "code");
       List<Object> list=TestEnums.getEumByKey(1);
       for (Object string : list) {
		System.out.println(":"+string);
	disagree("disagree","不同意"),
	measurement_agreement("measurement_agreement","测算同意"),
	approval("approval","审批"),
	to_be_activation("to_be_activation","待激活"),
	to_be_effective("to_be_effective","待启用"),
	valid("valid","有效"),
                                    可以把一个字符串转为对应的枚举对象。要求字符 串必须是枚举对象的“名字”。如不是,会有运行时异常:IllegalArgumentException。可以把一个字符串转为对应的枚举对象。要求字符 串必须是枚举对象的“名字”。如不是,会有运行时异常:IllegalArgumentException。返回枚举类型的对象数组。该方法可以很方便地遍历所有的枚举。返回枚举类型的对象数组。该方法可以很方便地遍历所有的枚举。返回当前枚举对象常量的名称。Enum类的方法如下图所示。
                                    在开发的过程我们经常会定义枚举类,枚举获取枚举的方式也有很多种,下面我们就探究一下大家常用的几种方式:
public enum TestEnum {
    ONE(1,"one"),
    ZERO(0,"zero"),
    TWO(2,"two"),
    FOUR(4,"four"),
    TestEnum (int id, String name) ......
public enum EasyExcelStyleType {
    NONE("默认样式", ExcelExportStylerDefaultImpl.class),
    BORDER("边框样式", ExcelExportStylerBorderImpl.class),
    COLOR("间隔行样式", ExcelExportStylerColorImpl.class),
    ONE("自定义样式一", EasyExcelStyle.class);
    EasyExce
                                    private esriFieldType getType(string str)
      foreach (esriFieldType item in Enum.GetValues(typeof(esriFieldType)))
        if (item.ToString().ToUpper(...
                                    本文用 4种不同的 代码 来 实现 枚举类型 变量 显示 对应的序号。(使用了相关文章1的很多内容)同时来探讨 get;set;方法 和 构造函数 的实际使用。本文的这张大图,已经包含了全部内容。1.1常规方法实现 显示枚举类型变量 对应的序号和名字test.csusing UnityEngine;
//这里的test必须 继承 MonoBehaviour,否则test[]数组 无法正常 工作
https://edu.csdn.net/course/detail/36074
Python实战量化交易理财系统
https://edu.csdn.net/course/detail/35475
Java 枚举是一个特殊的类,一般表示一组常量,比如一年的 4 个季节,一个年的 12 个月份,一个星期的 7 天,方向有东南西北等。
最近工作,对接了很多其他的系统,发现对接的同一个系统都有不同的环境(开发、测试、正式环境),并且每个环境的配置信息通常不会修改,所