精华内容
下载资源
问答
  • 本文转载自:http://blog.csdn.net/qq_27093465/article/details/51706076 作者:李学凯什么时候想用枚举类型:有时候,在设计一个java model对象的时候,你需要一些具体的常量字符串之的东西,这个东西又没必要跟...

    本文转载自:http://blog.csdn.net/qq_27093465/article/details/51706076 作者:李学凯

    什么时候想用枚举类型:

    有时候,在设计一个java model对象的时候,你需要一些具体的常量字符串之类的东西,这个东西又没必要跟整个项目的全局常量放在一起,就放在model的java文件里面是最合适的,那么,你可以有两种选择:

    1,在java model文件里面,定义public final static XXXX = "" ;

    这种就是全局静态变量,通过类名就可以直接访问。

    2,还是在java model 文件里面,定义个枚举类型 public enum XXXX{a,b,c,d,e,f};

    什么时候,如何使用:

    当在和前台传过来的数据或者在逻辑操作的代码里面需要去用到这个常量值去做比较的时候,就是使用枚举类型的时候。

    一般形式是: 类名.枚举类型名.单个枚举类型

    用上面的例子(假设在一个叫A的model java文件里面),

    则为A.XXXX.a.toString();

    就可以这么使用了。

    为什么要这么设计常量:

    这里有个代码的书写原则,这东西一般是没人,而且书里面也是没人跟你说的,都是代码看多了,或者,在你犯错误的时候才知道的问题。

    就是在自己的代码里面,要是想使代码很规范,不被吊打,

    那么写出来的逻辑代码里面是不应该出现常量字符串和常量数字之类的东西。

    例如代码里面出现数字:100,8,

    或者其他的数字,

    字符串如:只要是在逻辑代码里面带引号的。

    这些代码,你写出来虽然在功能上是没有问题的,但是,这些都是隐藏的炸弹。

    好的代码,是不会出现这个问题的。这些东西都应该被定义成一个常量,然后再在其他地方使用。

    类似c语言里面的宏定义的感觉。

    不然在很久之后,忽然有些地方的值换了,只需要修改一处地方,整个项目都不用担心会出问题,

    但是,如果你没有这么干,那么,没人知道你在逻辑代码里面还有这样的常量存在。

    那么代码就会出现美妙的后果。

    然后就炸了。

    怎么循环一个枚举类型。

    枚举有一个方法,values(),

    使用形式如: int length = XXXX.values().length

    返回的是一个类型与枚举类型一致的数组。

    然后就可以循环这个数组。

    就是循环枚举类型了。

    public enum EnumTest {

    MON, TUE, WED, THU, FRI, SAT, SUN;

    }

    //循环输出 值

    for (EnumTest e : EnumTest.values()) {

    System.out.println(e.toString());

    }

    4650d1ea9e55bd0edfe7fd26060a5963.png

    .ordinal()方法。

    这个方法就是从枚举类型的第一个枚举开始,依次从零开始往上递增。

    上面的例子中a,b,c,d,e,f,依次对应 为数字 ,0,1,2,3,4,5

    形式:A.XXXX.a.ordinal();

    这么个方式调用。

    创建枚举类型要使用 enum 关键字,

    隐含了所创建的类型都是

    java.lang.Enum

    类的子类(java.lang.Enum 是一个抽象类)

    其中的方法和属性如下图:

    c9cfee719ff6d14669501723f8f61379.png

    enum 对象的常用方法介绍

    int compareTo(E o)

    比较此枚举与指定对象的顺序。

    Class getDeclaringClass()

    返回与此枚举常量的枚举类型相对应的 Class 对象。

    String name()

    返回此枚举常量的名称,在其枚举声明中对其进行声明。

    int ordinal()

    返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零)。

    String toString()

    返回枚举常量的名称,它包含在声明中。

    static > T valueOf(Class enumType, String name)

    返回带指定名称的指定枚举类型的枚举常量。

    JAVA中循环遍历list有三种方式

    转自:https://blog.csdn.net/changjizhi1212/article/details/81036509JAVA中循环遍历list有三种方式for循环.增强for循环(也就是常 ...

    Java 枚举(enum) 详解7种常见的用法

    Java 枚举(enum) 详解7种常见的用法 来源 https://blog.csdn.net/qq_27093465/article/details/52180865 JDK1.5引入了新的类型— ...

    java中循环遍历实体类的属性和数据类型以及属性值

    package com.walkerjava.test; import java.lang.reflect.Field; import java.lang.reflect.InvocationTarg ...

    java 各种循环遍历

    遍历方式选择: 实现了 RandomAccess 接口的 list,优先选择普通 for 循环 ,其次 foreach: 未实现 RandomAccess 接口的 list, 优先选择 iterato ...

    Java 枚举(enum) 详解4种常见的用法

    JDK1.5引入了新的类型——枚举.在 Java 中它虽然算个“小”功能,却给我的开发带来了“大”方便. 大师兄我又加上自己的理解,来帮助各位理解一下. 用法一:常量 在JDK1.5 之前,我们定义常 ...

    Java中循环删除list中元素的方法总结

    印象中循环删除list中的元素使用for循环的方式是有问题的,但是可以使用增强的for循环,然后在今天使用的时候发现报错了,然后去科普了一下,发现这是一个误区.下面我们来一起看一下. Java中循环遍 ...

    JAVA中循环删除list中元素的方法总结【转】

    印象中循环删除list中的元素使用for循环的方式是有问题的,但是可以使用增强的for循环,然后今天在使用时发现报错了,然后去科普了一下,再然后发现这是一个误区.下面就来讲一讲..伸手党可直接跳至文末 ...

    JAVA中循环删除list中元素

    文章来源: https://www.cnblogs.com/pcheng/p/5336903.html JAVA中循环遍历list有三种方式for循环.增强for循环(也就是常说的foreach循环) ...

    随机推荐

    string length() 方法注意点

    突然意识到string length() 是跟文件的字符编码相关的 测试了下, 果然如此: 对于常见字, 结果是一样的, System.out.println("T中国123".l ...

    [Java解惑]应用

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

    linux 的开机启动脚本顺序

    linux 开机启动脚本顺序 linux 开机启动脚本顺序. 第一步:启动内核 第二步:执行init (配置文件/etc/inittab) 第三步:启动相应的脚本,并且打开终端/etc/init.d  ...

    【SQL】导出表数据到Excel中

    打开数据库之后点击新建表查询: ------------------------------------------------------------------------------------ ...

    Packetbeat协议扩展开发教程 一

    原文链接:http://elasticsearch.cn/article/48 Packetbeat(https://www.elastic.co/products/beats/packetbeat) ...

    laravel中的多对多关系详解

    数据表之间是纵横交叉.相互关联的,laravel的一对一,一对多比较好理解,官网介绍滴很详细了,在此我就不赘述啦,重点我记下多对多的关系 一种常见的关联关系是多对多,即表A的某条记录通过中间表C与表B ...

    Python3.6学习笔记(四)

    错误.调试和测试 程序运行中,可能会遇到BUG.用户输入异常数据以及其它环境的异常,这些都需要程序猿进行处理.Python提供了一套内置的异常处理机制,供程序猿使用,同时PDB提供了调试代码的功能,除 ...

    C++调用Java的Jar包

    一个简单需求:用C++调用Jar包. 实现基本思路:调用CreateProcess API来启动cmd.exe执行jar包. 调用类CJarAppCall. JarAppCall.h #pragma ...

    wpf简单的绘图板

    xaml:

    展开全文
  • public enum Hand {ROCK(SCISSORS),PAPER(ROCK),SCISSORS(PAPER);private final Hand beats;Hand(Hand beats) {this.beats = beats;}}我将得到错误的非法前向...或者你会如何模拟这种情况,你在几个枚举值之间有一个...

    public enum Hand {

    ROCK(SCISSORS),

    PAPER(ROCK),

    SCISSORS(PAPER);

    private final Hand beats;

    Hand(Hand beats) {

    this.beats = beats;

    }

    }

    我将得到错误的非法前向引用,用于前向引用SCISSORS.

    有没有办法在Java中处理这样的前向引用?

    或者你会如何模拟这种情况,你在几个枚举值之间有一个逻辑循环引用?

    解决方法:

    在定义SCISSORS之前,您无法将其分配给ROCK.相反,您可以在静态块中分配值.

    我已经看到很多人在构造函数中使用String值的例子,但是在声明它们之后分配实际值更具体.这是封装的,并且无法更改beats实例变量(除非您使用反射).

    public enum Hand {

    ROCK,

    PAPER,

    SCISSORS;

    private Hand beats;

    static {

    ROCK.beats = SCISSORS;

    PAPER.beats = ROCK;

    SCISSORS.beats = PAPER;

    }

    public Hand getBeats() {

    return beats;

    }

    public static void main(String[] args) {

    for (Hand hand : Hand.values()) {

    System.out.printf("%s beats %s%n", hand, hand.getBeats());

    }

    }

    }

    产量

    ROCK beats SCISSORS

    PAPER beats ROCK

    SCISSORS beats PAPER

    标签:circular-reference,java,enums,forward-reference

    来源: https://codeday.me/bug/20190823/1702021.html

    展开全文
  • 方法就是在构造枚举的时候,构造一个方法,去实现一个返回Map。 我们把CODE和Name都作为key写入,这样无论是否查询哪个都可以直接find。 public enum ResponseEnum { ENUM_ELEM1(200, "OK"), ENUM_ELEM2(400, ...

    方法就是在构造枚举的时候,构造一个方法,去实现一个返回Map。

    我们把CODE和Name都作为key写入,这样无论是否查询哪个都可以直接find。

    public enum ResponseEnum {
        ENUM_ELEM1(200, "OK"),
        ENUM_ELEM2(400, "NOT FOUND");
    
        private String code;
        private String name;
    
        //声明一个构造方法
        ResponseEnum(String code,String name){
            this.name=name;
            this.code=code;
        }
    
        // 转换成为 MAP<String, String>, 对外提供查询和遍历功能
        public static Map<String, String> toMap() {
            Map<String, String> map = new HashMap();
            for (ResponseEnum i : ResponseEnum.values()) {
                map.put(i.getName(), i.getCode());
                map.put(i.getCode(), i.getName());
            }
            return map;
        }
    }

    展开全文
  • 摘要 腾兴网为您分享:java枚举的两种遍历方法,余额宝,永安期货,易视云3,小睡眠等软件知识,以及幻想三国志4外传,损益表表格,2018微信最新的版本,贺卡,手机mp3格式转换器,cf挂无毒,火炬之光2宠物mod,一面...

    摘要 腾兴网为您分享:java枚举的两种遍历方法,余额宝,永安期货,易视云3,小睡眠等软件知识,以及幻想三国志4外传,损益表表格,2018微信最新的版本,贺卡,手机mp3格式转换器,cf挂无毒,火炬之光2宠物mod,一面ppt课件,驱动精灵离线装机版,湖口在线,荧光字体,番茄财富,满币网,ps星空素材,patcher等软件it资讯,欢迎关注腾兴网。本文章来给各位同学介绍java枚举的两种遍历方法,希望此教程对各位同学会有所帮助哦。 我们可以通过反射, 以及枚举类的静态方法values()来进行遍历: table width="620" align="center" borde...

    本文章来给各位同学介绍java枚举的两种遍历方法,希望此教程对各位同学会有所帮助哦。

    我们可以通过反射, 以及枚举类的静态方法values()来进行遍历:

     代码如下复制代码

    enum Rating

    {

    UNRATED,

    G,

    PG,

    PG13,

    R,

    NC17

    }

    public class Test{

    public static void main(String args[]){

    System.out.println("第一种通过反射");

    Class clz=Rating.class;

    for(Object obj:clz.getEnumConstants()){

    System.out.println(obj);

    }

    System.out.println("第二种通过枚举静态方法values()");

    for(Rating rate:Rating.values()){

    System.out.println(rate);

    }

    }

    }

    运行结果:

    C:java>java Test

    第一种通过反射

    UNRATED

    G

    PG

    PG13

    R

    NC17

    第二种通过枚举静态方法values()

    UNRATED

    G

    PG

    PG13

    R

    NC17

    相关推荐

    展开全文
  • 讲真,java枚举类提供的方法太少了,Enum只有两个valueOf可以搞,如果碰上需要传入枚举类型的值,获取枚举类对象或者枚举类型名称的时候,只能干瞪眼,或者循环比对。最近项目就遇到这种,而且感觉以后以及别人都...
  • /***Bestpay.com.cnInc.*Copyright(c)2011-2015AllRightsReserved.*/packagecom.bestpay.bpbp.common.enums;/***销账业务类型枚举**@authorWeiliang*@version$Id:BizTypeEnum.java,v0.12015年12月14日下午2:20...
  • enum使用例子,自己记录 public enum ExampleEnum { pass("通过"), nopass("未... } } 标签:en,java,String,Enum,ExampleEnum,static,Key,public,desc 来源: https://www.cnblogs.com/xiaoliu66007/p/13141336.html
  • 需要填写第二个节点的三个办理人员数据,三个办理人员的角色是固定的枚举类中的枚举值,这样第一个节点审批提交时,我们就需要创建三个不同角色的办理对象,创建对象时只需要获取枚举中的所有枚举,然后循环创建多个...
  • Java 枚举类转json对象

    2021-02-25 19:05:38
    1.情景展示如上图所示,我想要将枚举类转换成json对象,key对应属性名称,value对应属性值,效果如下:{"IvcVoucherCode":"200","IvcVoucherStatus":"票据模板下载成功"}如何实现?2.代码实现思路:使用spring的org....
  • java枚举接口

    2021-03-04 02:42:08
    java中的枚举类枚举类(enum),与class和interface关键字地位相同。枚举类是一个特殊的类,可以有自己的成员变量、方法、构造器,可以实现一个或多个接口。一个java源文件中只能有一个public的enum类。枚举类终究不是...
  • 枚举公共接口public interface IPairs {/*** 返回枚举对象* */C get();/*** 返回枚举项的 key* */K key();...}状态枚举类public enum StatusEnum implements IPairs {DISABLED(0, "record has been disabled"),...
  • java http状态码枚举类

    千次阅读 2021-03-16 21:02:50
    * http状态码枚举所有状态码注解 */ CONTINUE(100, "Continue", "请继续发送请求的剩余部分"), SWITCHING_PROTOCOLS(101, "Switching Protocols", "协议切换"), PROCESSING(102, "Processing", "请求
  • 枚举类型步骤 1 : 预先定义的常量枚举enum是一种特殊的(还是),使用枚举可以很方便的定义常量比如设计一个枚举类型 季节,里面有4种常量public enum Season {SPRING,SUMMER,AUTUMN,WINTER}一个常用的场合就是...
  • Java中,ArrayList可以解决运行时动态更改数组的问题。ArrayList使用起来有点像数组,但是在添加或删除元素时,具有自动调节数组容量的功能,而不需要为此编写任何代码。对数组列表实施插入和删除操作效率比较低...
  • 可以调用枚举 class 的 values() 方法返回数组,然后遍历这个数组:for (EnumClass ...}在 Java 8 之后的版本可以将枚举类型转换为流来进行遍历:Stream.of(EnumClass.values()).forEach(System.out::println);使用 ...
  • 今天遇到一个问题,就是设计了两个枚举,一个是状态枚举(EnumA)一个是动作枚举(EnumB),状态枚举定义了当前状态的可以进行的操作,操作枚举定义了执行了此操作后的下一个状态。具体代码如下:public enum EnumA {...
  • /*** 枚举类** @Author zjl* @Date 2018/06/27*/public enum EnumType {All_TYPE("所有类型", 0),TYPE_ONE("类型一", 1),TYPE_TOW("类型二", 2),private final String typeName;private final in...
  • JAVA枚举的作用与好处

    千次阅读 2021-02-13 00:18:45
    JAVA枚举的作用与好处(2012-12-13 11:33:16)标签:我有信息示例好处任何it枚举是一种规范它规范了参数的形式,这样就可以不用考虑类型的不匹配并且显式的替代了int型参数可能带来的模糊概念 枚举像一个,又像一个...
  • Java枚举类型的妙用

    2021-04-22 19:19:35
    最后由于这个方法可能会在很多地方都会调用,因此我们直接封装到枚举类中。 最终优化版本如下: 值得注意的是, WAIT_PAY 是静态值对象,并不是实例化成员属性值 这样我们无论在哪里想要获取这个枚举类型列表都可以...
  • /*** @ClassName: MccCodeEnum* @Description: mccCode 枚举类* @author tianweichang* @date 2015年6月26日 上午13:32:52*/public enum MccCodeEnum {goodsTrade("122030", "货物贸易 "),CrossBorderTourism(...
  • 内部类和枚举类

    千次阅读 2021-02-27 14:57:02
    内部:内部的定义 :在一个的内部又定义了一个,里面的这个就是内部。内部可以定义在外部的成员位置(与成员变量的位置相同)或局部位置(意思是,把写在外部的方法里面)。什么时候使用内部 :一个...
  • java判断枚举是否包含

    千次阅读 2021-02-26 21:40:34
    实验报告课程名称: Java 程序设计 成绩评定: 指导教师: 实验项目名称:接口、泛型、枚举、内部类与... 1 声明枚举类 public enum Grade { A, B, C, D, E }; 它包括一个关键字enum,一个新枚举类型的名 字 ......} } pu...
  • 参见英文答案 >A ‘for’ loop to iterate over an enum in Java9个假设我有这样的枚举:public enum Numbers {ONE("Uno "),TWO("Dos "),THREE("Tres ");}private final String spanishName;Num...
  • java 枚举

    2021-03-13 03:56:21
    Java枚举的线程安全性及序列化问题--枚举是如何保证线程安全的要想看源码,首先得有一个吧,那么枚举类型到底是什么呢?是enum吗?答案很明显不是,enum就和class一样,只是一个关键字,他并不是一个,那么...
  • Java 枚举(enum)

    2021-02-27 19:35:04
    1、枚举(enum)enum是一个特殊的,代表一组常量(不可更改的变量,如,final变量)。要创建enum,请使用enum关键字(而不是或接口),并用逗号分隔常量。请注意,它们应使用大写字母:例如:访问enum中常量可以使用....
  • java中的枚举类型怎么定义?

    千次阅读 2021-03-04 03:06:17
    7.Enum还有一个oridinal的方法,这个方法返回枚举值在枚举类种的顺序,这个顺序根据枚举值声明的顺序而定,这里Color.Red.ordinal()返回0。 了解了这些基本特性,我们来看看如何使用它们。 1.遍历所有有枚举值. ...
  • 枚举类:public enum ContractTempletEnumCopy {PPT(1), SIGNT(2), UNKNOWN(-1);private Integer id;ContractTempletEnumCopy(Integer id) {this.id = id;}public Integer getId() {return this.id;}public void set...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 76,128
精华内容 30,451
关键字:

java循环枚举类

java 订阅