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 天,方向有东南西北等。
最近工作中,对接了很多其他的系统,发现对接的同一个系统都有不同的环境(开发、测试、正式环境),并且每个环境的配置信息通常不会修改,所