精华内容
下载资源
问答
  • java 通过反射获取枚举类,及枚举类枚举类枚举实例名。本项目为普通java项目
  • java枚举结果、根据状态获取枚举值 Controller: /** 模块类型枚举 */ model.addAttribute("mType", ModuleTypeEnum.ModuleTypeShow()); ftl: value="${mType.key}:${mType.value}” </#list>
  • java_枚举类枚举值

    2013-08-18 01:17:03
    // 通过valueof方法获取指定枚举类 Gender gf = Enum.valueOf(Gender.class, "FEMALE"); Gender gm = Enum.valueOf(Gender.class, "MALE"); System.out.println(gf+" is stand for "+gf.getName()); ...
    package ming;
    
    enum Gender{
    	MALE("男"),FEMALE("女");
    	//public static final Gender MALE = new Gender("男");
    	private String name;
    
    	public String getName() {
    		return name;
    	}
    
    	private Gender(String name) {
    		this.name=name;
    	}
    	
    }
    
    public class enumTest {
    	public static void main(String[] args) {
    		// 通过valueof方法获取指定枚举类的值
    		Gender gf = Enum.valueOf(Gender.class, "FEMALE");
    		Gender gm = Enum.valueOf(Gender.class, "MALE");
    
    		System.out.println(gf+" is stand for "+gf.getName());
    		System.out.println(gm+" is stand for "+gm.getName());
    		
    	}
    
    }
    

    展开全文
  • Java枚举类

    千次阅读 2018-11-17 19:38:23
    文章目录1 枚举类入门2 `java.lang.Enum`常用方法3 枚举类的成员变量和方法4 枚举类实现接口5 抽象枚举类 1 枚举类入门 对于对象有限且固定的,使用枚举类。 使用enum关键字定义枚举类。(enum关键字和class...

    1 枚举类介绍

    对于对象有限且固定的类,使用枚举类。 特别是定义一组常量是,强烈建议使用枚举类。

    如:

    • 星期:Monday, Tuesday, …, Sunday
    • 季节:Spring, summer, autumn, winter
    • 性别:male, female

    2 自定义枚举类

    jdk5.0之前,枚举类需要自己定义。因为枚举类用于对象有限且固定的情况,所以自己定义的枚举类一般建议:

    • 构造方法私有private,防止构造新的对象。枚举值要调用对应的构造器来创建
    • 枚举类的成员声明为 private final
    • 枚举类的对象成员声明为 public static final

    简单的例子:

    /**
     * Gender枚举类,对性别进行枚举
     */
    class Gender {
        // 属性声明
        private final String name;
        private final String describe;
    
        // 私有化构造器
        private Gender(String name, String describe) {
            this.name = name;
            this.describe = describe;
        }
    
        // 实例化枚举类能提供的有限个对象
        public static final Gender MAN = new Gender("man", "Gender: man");
        public static final Gender WOMAN = new Gender("woman", "Gender: woman");
    
        // 如果有必要,可以提供get方法获取属性信息
        public String getName() {
            return name;
        }
    
        public String getDescribe() {
            return describe;
        }
        
    }
    

    3 通过enum定义枚举类

    使用enum关键字定义枚举类。(enum关键字和class、interface的作用相似)

    enum Gender2 {
        // 首行列出所有枚举对象,直接 `对象名(构造方法参数)` ,对象之间用 `,` 隔开
        MAN("man", "gender: man"),  // public static final Gender2 MAN = new Gender2("man", "gender: man")
        WOMAN("woman", "gender: man");
    
        // 属性声明
        private final String name;
        private final String describe;
    
        // 私有化构造器
        private Gender2(String name, String describe) {
            this.name = name;
            this.describe = describe;
        }
    
        // 如果有必要,可以提供get方法获取属性信息
        public String getName() {
            return name;
        }
    
        public String getDescribe() {
            return describe;
        }
    }
    
    • 枚举类注意事项:
      • 枚举类默认继承java.lang.Enum类。

      java.lang.Enum类常用方法
        Enum类的常用方法,可以由用户自己定义的枚举类使用。(继承)

      • values():返回枚举类型的对象数组
      • valueOf(String str):将str字符串转化为同名的枚举类对象
      • toString():返回当前枚举类对象的名称
      • 非抽象枚举类默认使用final修饰,不能派生子类。

    注意

    1. 枚举类的实例通过类名.实例名调用。
    2. switch的控制表达式可以是任何枚举类型,case表达式的值可以直接用枚举对象的名字,不需要添加枚举类作为限定。
    Gender2 b = Gender2.MAN;
    switch (b) {
    	case MAN: System.out.println("man");break;
        case WOMAN: System.out.println("woman");break;
    }
    

    4 枚举类实现接口

      枚举类可以和普通类一样实现接口,但这种实现使得每个枚举实例的接口实现方法都一样。若要为每个枚举值提供不同实现方式,参照匿名对象实现:

    //接口
    public interface GenderDesc{
        void info();
    }
    
    //枚举类实现接口
    public enum Gender implements GenderDesc{
        MALE("男"){
            public void info(){
                System.out.println("这个枚举值代表男性");
            }
        },
        FEMALE("女"){
             public void info(){
                System.out.println("这个枚举值代表女性");
            }
        };
        private final String name;
        private Gender(String name){
            this.name=name;
        }
    }
    

    注意:此时的枚举值不是Gender枚举类的实例,而是Gender的匿名子类的实例。

    5 抽象枚举类

    • 枚举类中有抽象方法时,系统自动为其添加abstract关键字,不能手动添加。
    • 枚举值中要重写枚举类的抽象方法。
    package org.ywq.absenumclass;
    
    public enum Operation {
    	ADD {
    		public double oper(double x, double y) {
    			return x + y;
    		}
    	},
    	SUB {
    		public double oper(double x, double y) {
    			return x - y;
    		}
    	},
    	MUL {
    		public double oper(double x, double y) {
    			return x * y;
    		}
    	},
    	DIV {
    		public double oper(double x, double y) {
    			return y == 0 ? y : x / y;
    		}
    	};
    	// 抽象方法
    	public abstract double oper(double x, double y);
    
    	public static void main(String[] args) {
    		System.out.println(Operation.ADD.oper(1.2, 2.1));
    		System.out.println(Operation.SUB.oper(1.2, 2.1));
    		System.out.println(Operation.MUL.oper(1.2, 2.1));
    		System.out.println(Operation.DIV.oper(1.2, 2.1));
    	}
    }
    
    展开全文
  • Java随机获取枚举类,获取的枚举值可以根据最大,最小值来控制 public static <T extends Enum<?>> T randomEnum(Class<T> clazz, Integer min, Integer max) { Random random = new Random(); if (min > ...

    Java随机获取枚举类的值,获取的枚举值可以根据最大值,最小值来控制

    public static <T extends Enum<?>> T randomEnum(Class<T> clazz, Integer min, Integer max) {
        Random random = new Random();
    
        if (min > clazz.getEnumConstants().length || max > clazz.getEnumConstants().length) {
            return null;
        }
    
        //参数模式为第二种的时候
        if (min != null && max != null) {
            int rand = random.nextInt(max - min + 1) + min - 1;
            return clazz.getEnumConstants()[rand];
        } else {
            int x = random.nextInt(clazz.getEnumConstants().length);
            return clazz.getEnumConstants()[x];
        }
    
    }
    

    eg:

    public enum TradeStatusEnum{
    
    	SUCCESS("1",  "SUCCESS", "支付成功"),
    
    	REFUND("2", "REFUND", "转入退款"),
    
     	NOTPAY("3",  "NOTPAY", "未支付"),
    
     	CLOSED("4",  "CLOSED", "已关闭"),
    
    	REVOKED("5",  "REVOKED", "已撤销(刷卡支付)"),
    
    	USERPAYING("6",  "USERPAYING", "用户支付中"),
    
    	PAYERROR("7",  "PAYERROR", "支付失败(其他原因,如银行返回失败)");
    
        private String id;
    
        private String status;
    
        private String desc;
    
        TradeStatusEnum(String id, String status, String desc) {
            this.id = id;
            this.status = status;
            this.desc = desc;
        }
    
        public static String getDescByStatus(String status) {
            if (status == null) {
                return null;
            }
            for (TradeStatusEnum tradeStatusEnum : TradeStatusEnum.values()) {
                if (tradeStatusEnum.getStatus().equals(status)) {
                    return tradeStatusEnum.getDesc();
                }
            }
            return null;
        }
    
        public String getId() {
            return id;
        }
    
        public String getStatus() {
            return status;
        }
    
        public String getDesc() {
            return desc;
        }
    }
    

    新手菜鸟,有问题请多多指正~

    展开全文
  • 通过枚举类值获得枚举类实例

    千次阅读 2018-11-04 01:07:06
    需求: 判断同一监控点下监控点名称是否已存在 前端页面: 数据库: ...实体: @Enumerated(EnumType.STRING) @Column(name = "monitor_type", length = 30) private MonitorTyp...

    需求: 判断同一监控点下监控点名称是否已存在
    前端页面
    在这里插入图片描述
    数据库
    (monitor_type:监控点类型;TeleMeasurement:遥测;TeleQuantity:遥信)
    在这里插入图片描述
    实体类:

        @Enumerated(EnumType.STRING)
        @Column(name = "monitor_type", length = 30)
        private MonitorType monitorType;//监控点类型
    
    

    枚举类型定义如下:

    /**
     1. 监控点类型
     */
    public enum MonitorType {
    	TeleMeasurement("遥测"),TeleQuantity("遥信");
        private String name;
    
        MonitorType(String name) {
            this.name = name;
        }
    
        public String getName() {
            return name;
        }
       
    

    难点: 监控点类型字段(monitor_type)在实体类中是以枚举类型来保存的
    分析: 从选项框选择后从数据库查询选中的监控点类型,由于该字段在实体类中是以枚举类型保存,因此从前端获取到选项框的值也就是枚举类值后需通过该枚举类值去获得它的描述,然后再去数据库中查询。

    解决步骤:
    1. 获取选项框选中的值
    jsp页面代码:

    <div class="ftitle">监控点信息</div>
            <form id="fm" method="post" novalidate>
             	<div class="fitem">
                    <label>监控点类型:</label>
    			 <select id="monitorType" name="monitorType" class="easyui-combobox" data-options="								
    				         editable:false" style="width:150px" required="true"
                           >
                        <option value="TeleMeasurement">遥测</option>
                        <option value="TeleQuantity">遥信</option>
                    </select>
                </div>
    

    js获取选项框值并传给控制层:

    var type = $("#monitorType").combobox('getText');
            $.post( path+'/monitor/monitorExists' , {type:type, name:mName,id:id} , function(r){
                if(r){
                    $.messager.alert("提示","此监控点类型下监控点名已经存在.");
                    return;
              	  }else{}
              },'json');
    

    2. 控制层获取监控点类型的值

     //监控点名是否存在
        @RequestMapping(value = { "/monitorExists" }, method = { org.springframework.web.bind.annotation.RequestMethod.POST })
        @ResponseBody
        public boolean keyExists(HttpServletRequest request) {
            String monitorType = request.getParameter("type");
            ...
            Map<String, String> queryMap = new HashMap<String, String>();
       	queryMap.put("monitorType", monitorType);
       	...
            return this.monitorService.monitorExists(queryMap);
        }
    

    3. service层直接调用dao层方法(省略)
    4. 枚举类中添加方法,该方法通过枚举类值获得枚举类实例

     */
    public enum MonitorType {
    	TeleMeasurement("遥测"),TeleQuantity("遥信");
        private String name;
    
        MonitorType(String name) {
            this.name = name;
        }
    
        public String getName() {
            return name;
        }
        
        //通过枚举类值获得枚举类实例
        public static MonitorType geMonitorType(String name) {
    		for(MonitorType type : MonitorType.values()){
    			if(type.getName().equals(name)){
    				return type;
    			}
    		}
    		return null;
    	}
    

    5.dao层查询数据库表
    通过 geMonitorType将获取到的枚举值去得到对应的枚举类实例,然后与数据库表中存储的数据进行匹配。

    @Override
    	public boolean monitorExists(Map<String, String> queryMap) {
    		 String name=queryMap.get("name");
    		...
    		 List<Object> param=new ArrayList<Object>();
    		 StringBuilder s=new StringBuilder("select count(*) from Monitor m where deleted=0");
    		 if (monitorType!=null) {
    			s.append("and m.monitorType=?");
    			param.add(MonitorType.geMonitorType(monitorType));
    		}
    		...
    		 Integer total=Integer.valueOf(super.executeScalarByParam(s.toString(), param.toArray()).intValue());
    		return  total.intValue() > 0;
    	}
    
    展开全文
  • 解析字符串转化为对象+code转desc+通过值实例枚举类+EnumUtil+PackageUtils工具 ZipInputStream实现压缩文件的读取与数据转化的过程,利用反射实现根据枚举值获取枚举对象。
  • 利用JAVA反射获取所有枚举类

    千次阅读 2019-05-17 17:57:06
    JAVA反射获取所有枚举定义枚举接口枚举类获取所有枚举输出 定义枚举接口 public interface BaseEnum { /** * 获取枚举值 * @returnint */ Integer getValue(); /** * 获取枚举名称 * @return */ String ...
  • 示例:下面的getName方法 /** * 申请人特殊程序状态 * @author vhukze * @date 2021/2/7 - 9:11 */ @Getter public enum ApplicantSpecialStatusEnum { ... 已完成立案审查_待接收立案通知(4), ...
  • Java 枚举类和自定义枚举类和enum声明及实现接口1.枚举类1.枚举类的属性2.自定义枚举类2.Enum枚举类3.实现接口的枚举类 1.枚举类 注: JDK1.5之前需要自定义枚举类 JDK 1.5 新增的 enum 关键字用于定义枚举类 ...
  • * 获取枚举值 * @returnint */ Integer getValue(); /** * 获取枚举名称 * @return */ String getName(); } 枚举类 @Getter public enum TestEnum implements BaseEnum { TEST1("name1",1
  • java5引入了枚举类这一新特性,
  • 我们知道在JAVA编写一个枚举类之后,在调用时系统就会自动给它生成一个values()的数组,通过这个数组就可按索引获取枚举值 但是如果我们声明的是一个枚举的范型呢?我们知道所有的JAVA枚举类,其实都是继承Enum...
  • Java学习笔记-枚举类

    千次阅读 2019-04-02 13:03:37
    实例有限且固定的成为枚举类 枚举类的实现 早期时候的实现形式: public static final int SEASON_SPRING = 1; public static final int SEASON_SUMMER = 2; public static final int SEASON_FAIL = 3; public ...
  • Java枚举类Enum

    2021-02-17 18:03:34
    文章目录Java枚举类Enum什么是枚举类枚举类的使用场景什么是枚举Java中的枚举Enum没有枚举类型时定义常量使用枚举类型定义Java枚举的常见API的使用Java枚举类常见API Java枚举类Enum 什么是枚举类枚举类的使用...
  • 详细阅读了相关java和c++有关枚举类的介绍。做一个总结 。  枚举类型使我们可以将一组常量组织在一起,和一样,每个枚举类型定义了一种新的类型。java和c++不同之处在于:  c++的枚举类型只能是整形常量(int 、...
  • 今天在开发的时候遇到一个判断需求:判断一个是否属于枚举类。之前写的话都是通过在if里面写上|| 或来连接 或者为每个枚举Enum写一个遍历判断的方法。后来想了一下实在太麻烦了,加入枚举类改变的话业务代码的判断...
  • Java1.5提供了关键字enum,能够通过该关键字方便得定义自己须要的枚举类型,比方  enum Season {  SPRING, SUMMER, AUTUMN, WINTER  }  定义了一个季节枚举类型。  在本例中,对于Season.SPRING这个...
  • Java枚举类enum介绍

    2020-09-03 19:44:42
    主要介绍了Java枚举类enum介绍,和其它普通一样,enum同样可以有成员变量、方法、构造器,也可以实现一个或多个接口,需要的朋友可以参考下
  • Java基础复习——枚举类

    千次阅读 2019-05-21 08:50:18
    7-2jmu-Java-02基本语法-06-枚举(3分) 定义一个枚举类型Grade来表示考试的4个等级,包含A,B,C,D,E 编写一个函数Grade getGrade(int score)将传递进来的score转化为枚举类型 >=90 and <=100返回A, >...
  • Java 枚举值的用法

    2017-07-24 18:34:02
    Java 枚举值的用法
  • Java 遍历枚举值

    千次阅读 2020-09-19 09:18:46
    Java 遍历枚举值 枚举Java中数据类型,用于将一组预定义常量赋给变量。本文介绍几种方式遍历枚举值。 1. 定义枚举 首先我们定义枚举,简单示例如下: public enum DaysOfWeekEnum { SUNDAY, MONDAY, TUESDAY, ...
  • 讲真,java枚举类提供的方法太少了,Enum只有两个valueOf可以搞,如果碰上需要传入枚举类型的,获取枚举类对象或者枚举类型名称的时候,只能干瞪眼,或者循环比对。最近项目就遇到这种,而且感觉以后以及别人都...
  • Java反射 遍历判断是否属于枚举类

    千次阅读 2020-08-19 23:37:02
    今天在开发的时候遇到一个判断需求:判断一个是否属于枚举类。 之前写的话都是通过在if里面写上|| 或来连接 或者为每个枚举Enum写一个遍历判断的方法。 后来想了一下实在太麻烦了,加入枚举类改变的话业务代码的...
  • Java 枚举(enum) 详解7种常见的用法

    万次阅读 多人点赞 2016-08-11 11:14:45
    JDK1.5引入了新的类型——枚举。在Java中它虽然算个“小”功能,却给我的开发带来了“大”方便。 大师兄我【大师兄】又加上自己的理解,来帮助各位理解一下。 用法一:常量 在JDK1.5之前,我们定义常量都是:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 156,532
精华内容 62,612
关键字:

java通过值查询枚举类

java 订阅