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

Java 枚举(enum) 详解五种常见的用法nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp Java 枚举 enum 详解五种常见的用法一 枚举型常量 packagecom yang 首先枚举是一个特殊的 class 这个 class 相当于 finalstatic 修饰 不能被继承 他的构造方法强制被私有化 下面有一个默认的构造方法

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

一、枚举型常量

package com.yang; //首先枚举是一个特殊的class //这个class相当于final static修饰,不能被继承 //他的构造方法强制被私有化,下面有一个默认的构造方法private ColorEnum(); //所有的枚举都继承自java.lang.Enum类。由于Java 不支持多继承,所以枚举对象不能再继承其他类 public enum ColorEnum { //每个枚举变量都是枚举类ColorEnum的实例,相当于RED=new ColorEnum(1),按序号来。 //每个成员变量都是final static修饰 RED, GREEN, BLANK, YELLOW; } 

测试类:

@org.junit.Test public void ColorTest() { //ordinal返回枚举变量的序号 for(ColorEnum color:ColorEnum.values()) { System.out.println(color+",ordinal:"+color.ordinal()+",name:"+color.name()); } }

二、带一个参数的枚举

package com.yang; public enum TypeEnum { FIREWALL("firewall"), SECRET("secretMac"), BALANCE("f5"); private String typeName; TypeEnum(String typeName) { this.typeName = typeName; } / * 根据类型的名称,返回类型的枚举实例。 * * @param typeName 类型名称 */ public static TypeEnum fromTypeName(String typeName) { for (TypeEnum type : TypeEnum.values()) { if (type.getTypeName().equals(typeName)) { return type; } } return null; } public String getTypeName() { return this.typeName; } } 

测试类:

@org.junit.Test public void TypeTest() { String typeName = "f5"; TypeEnum type = TypeEnum.fromTypeName(typeName); //type:是TypeEnum类实例化对象 typeName:实例化对象type的值  // ordinal:实例化对象type的序号(int) 排序值(默认自带的属性 ordinal 的值) //name:实化对象的名字(String) 枚举名称(即默认自带的属性 name 的值) System.out.println(type+",typeName:"+type.getTypeName()+",ordinal:"+type.ordinal()+",name:"+type.name()); }

三、向枚举中添加新方法

package com.yang; public enum SeasonEunm { //每一个枚举变量都是枚举类SeasonEunm的实例化 //SeasonEunm.SPRING获得的对象相当于new SeasonEunm("春","春困");获得的对象 SPRING("春","春困"),SUMMER("夏","夏睡"),AUTUMN("秋","秋乏"),WINTER("冬","冬眠"); //强制私有化的构造方法,因为枚举类默认继承Eunm类,被final static修饰,不能被继承 //由于被强制private,所以不能使用new去生成枚举对象 //在SeasonEunm.SPRING获得对象,隐式调用了下面的构造方法 // 构造方法 ,赋值给成员变量 private SeasonEunm(String name, String value) { this.name = name; this.value = value; } //添加成员变量的原因是,方便够着方法赋值,使用SeasonEunm.SPRING.getName就能获取对应的值 private String name; private String value; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } } 

测试类:

@org.junit.Test public void SessionTest() { //ordinal返回枚举变量的序号 for(SeasonEunm seasion:SeasonEunm.values()) { System.out.println(seasion+",ordinal:"+seasion.ordinal()+",name:"+seasion.name()); System.out.println("枚举变量值:"+seasion.getName()+",枚举变量值:"+seasion.getValue()); } }

四、覆盖枚举的方法

package com.yang; public enum RGBEnum { RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4); // 成员变量  private String name; private int index; // 构造方法 ,赋值给成员变量 private RGBEnum(String name, int index) { this.name = name; this.index = index; } //覆盖方法 :只能使用toString方法来输出枚举变量值 @Override public String toString() { return this.index+"_"+this.name; } } 

测试方法:

@org.junit.Test public void RGBEnumTest() { for(RGBEnum rgb:RGBEnum.values()) { System.out.println(rgb.toString()); } }
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/219024.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午10:58
下一篇 2026年3月17日 下午10:58


相关推荐

  • 微软对ice服务器被炸的态度,我的世界ice服务器火了是因为被炸吗?「建议收藏」

    微软对ice服务器被炸的态度,我的世界ice服务器火了是因为被炸吗?「建议收藏」我的世界ice服务器被炸了这事情在2020年被炒的火热。本来服务器被炸是正常不过的事情了,但是不知道那个玩家在网上说什么ICE服务器价值好几万,炸服务器的玩家应该承担法律责任。而另一方面,炸服务器的凶手“Mn搜索阿喵”也自称服务器被炸之后它日子不好过。然而戏剧性的一幕发生了,3月29号,ICE服务器官方发表声明,说这一切都是造谣而已,所谓的ICE服务器价值没有好几万,服务器也才开了不到两个月。而…

    2022年5月1日
    85
  • 调试器的工作原理

    调试器的工作原理调试器的工作原理 黑客调试技术揭秘 nbsp 理解调试器的工作原理 nbsp nbsp 对调试器的工作原理毫无所知就贸然地使用它是很愚蠢的 所以 在本节中 我将介绍调试器工作的基本原理和理论基础 这可不是一个简明易懂的论述 不过 能让你抓住所要研究问题的主要思想 IntelArchite sManualVolum

    2026年3月17日
    2
  • Vue遍历数组中的对象

    Vue遍历数组中的对象template div divv for value key index inmydata key index p 值 value a value b value c p p p divv for value key index inmydata key index div template

    2026年3月26日
    2
  • 推荐一款博客备份工具!

    推荐一款博客备份工具!网友老紫竹开发了一个csdn博客备份工具,现在推荐给大家,有需要备份博客的可以点击下面的链接使用该工具。在此,我们感谢老紫竹为博客所作出的贡献!同时我们也欢迎其他网友来开发各种实用的博客工具,然后分享给大家使用!备份工具地址:http://www.java2000.net/csdn/blogbackup.jsp…

    2022年7月25日
    8
  • Ace在线代码编辑器使用「建议收藏」

    Ace在线代码编辑器使用「建议收藏」这边文章https://blog.csdn.net/liuxiao723846/article/details/106732401介绍了Ace的使用,本文围绕Ace的api深入介绍其具体功能。官网api使用文档:https://ace.c9.io/#nav=howto1、基本配置:ace有许多的配置项可供选择,通过这些配置项可以打造自己的个性编辑器你可以通过setTheme来设置主题,需要注意的是主题文件要存在,并且需要与ace.js同级,命名规则为theme-主题名.jsedito.

    2022年8月14日
    56
  • com.onseven.dbvis.DbVisualizerGUI

    com.onseven.dbvis.DbVisualizerGUIcom.onseven.dbvis.DbVisualizerGUI

    2022年4月23日
    354

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号