java枚举类

时间:2022-08-23 11:25:13

enum关键字用于定义枚举类,若枚举只有一个成员, 则可以作为一种单例模式的实现方式。

 
枚举类对象的属性不应允许被改动, 所以应该使用 private final 修饰。
枚举类的使用 private final 修饰的属性应该在构造器中为其赋值。
若枚举类显式的定义了带参数的构造器, 则在列出枚举值时也必须对应的传入参数。
 
必须在枚举类的第一行声明枚举类对象。
枚举类和普通类的区别:
       1.使用 enum 定义的枚举类默认继承了 java.lang.Enum 类
       2.枚举类的构造器只能使用 private 访问控制符
       3.枚举类的所有实例必须在枚举类中显式列出(以,分隔 以; 结尾). 列出的实例系统会自动添加 public static final 修饰
 
JDK1.5之前需要自定义枚举类:
 
/*枚举类的自定义方式*/
public class TestSeason {
public static void main(String[] args){
Season spring=Season.SPRING;
System.out.println(spring);
System.out.println(spring.getSeasonName());
}
}
//枚举类
class Season{
//1.提供类的属性,声明为private final
private final String seasonName;
private final String seasonDesc;
//2.声明为final的属性,在构造器中初始化
private Season(String seasonName,String seasonDesc){
this.seasonName=seasonName;
this.seasonDesc=seasonDesc;
} public static final Season SPRING=new Season("spring","春暖花开");
public static final Season SUMMER=new Season("summer","夏日炎炎");
public static final Season AUTOMN=new Season("automn","秋高气爽");
public static final Season WINTER=new Season("winter","白雪皑皑"); //通过公共的方法来调用属性
public String getSeasonName() {
return seasonName;
}
public String getSeasonDesc() {
return seasonDesc;
}
@Override
public String toString() {
return "Season [seasonName=" + seasonName + ", seasonDesc="
+ seasonDesc + "]";
}
}
JDK 1.5 新增的 enum 关键字用于定义枚举类:
     枚举类的主要方法:
         1.values()方法:返回枚举类型的对象数组。该方法可以很方便地遍历所有的枚举值。
         2.valueOf(String str):可以把一个字符串转为对应的枚举类对象。要求字符串必须是枚举类对象的“名字”。如不是,会有运行时异常。
     若需要每个枚举值在调用实现的接口方法呈现出不同的行为方式, 则可以让每个枚举值分别来实现该方法
/*
* 一.枚举类
* 1.如何自定义枚举类
* 2.如何使用enum关键字定义枚举类
* 常用的方法;values(),valueOf(String str)
* 如何使枚举类实现接口:可以让不同的枚举类的对象调用被重写的抽象方法,执行的效果不同(相当于每个对象重写抽象方法)
* */ public class TestSeason1{
public static void main(String[] args){
SeasonEnum spring=SeasonEnum.SPRING;
System.out.println(spring);
System.out.println(spring.getSeasonName()); //1.values方法可以返回枚举类型的对象数组,可以方便遍历所有的枚举值
SeasonEnum[] seasons=SeasonEnum.values();
for(int i=0;i<seasons.length;i++){
System.out.println(seasons[i]);
}
//2.valueOf方法可以把一个字符串转为对应的枚举类对象,要求字符串必须是枚举类对象的“名字”
String str="WINTER";
SeasonEnum sea=SeasonEnum.valueOf(str);
System.out.println(sea);
//不同的枚举类对象调用重写的show方法得到不同的效果
spring.show();
sea.show(); }
}
//接口
interface Info{
public void show();
}
//实现接口的枚举类
enum SeasonEnum implements Info{
//必须在枚举类的第一行声明枚举类对象
SPRING("spring","春暖花开"){
public void show(){
System.out.println("春天在哪里");
}
},
SUMMER("summer","夏日炎炎"){
public void show(){
System.out.println("生如夏花");
}
},
AUTOMN("autumn","秋高气爽"){
public void show(){
System.out.println("金色的秋天");
}
},
WINTER("winter","白雪皑皑"){
public void show(){
System.out.println("冬天里的一把火");
}
}; private final String seasonName;
private final String seasonDesc; private SeasonEnum(String seasonName, String seasonDesc) {
this.seasonName = seasonName;
this.seasonDesc = seasonDesc;
} public String getSeasonName() {
return seasonName;
} public String getSeasonDesc() {
return seasonDesc;
}
}

java枚举类的更多相关文章

  1. Java枚举类在生产环境中的使用方式

    前言   Java枚举在项目中使用非常普遍,许多人在做项目时,一定会遇到要维护某些业务场景状态的时候,往往会定义一个常量类,然后添加业务场景相关的状态常量.但实际上,生产环境的项目中业务状态的定义大部 ...

  2. Java 枚举类

    如果要定义一个枚举类: public enum Size { SAMLL, MEDIUM, LARGE, EXTRA, EXTRA_LARGE}; 实际上,这个声明定义的类型是一个类,它刚好有4个实例 ...

  3. java 枚举类 enum 总结

    枚举定义: enum是计算机编程语言中的一种数据类型.枚举类型:在实际问题中,有些变量的取值被限定在一个有限的范围内.例如,一个星期内只有七天,一年只有十二个月,一个班每周有六门课程等等.如果把这些量 ...

  4. java 枚举类小结 Enum

    好久没有接触枚举类了,差不多都忘了,今天抽出个时间总结一下吧.说实话,枚举类确实能够给我们带来很大的方便. 说明:枚举类它约定了一个范围,可以理解成只可以生成固定的几个对象让外界去调用,故枚举类中的构 ...

  5. 【JAVA】浅谈java枚举类

    一.什么情况下使用枚举类? 有的时候一个类的对象是有限且固定的,这种情况下我们使用枚举类就比较方便? 二.为什么不用静态常量来替代枚举类呢? public static final int SEASO ...

  6. Java枚举类enum

    枚举类enum是JDK1.5引入的,之前都是用public static final int enum_value来代替枚举类的.枚举类enum是一种特殊的类,它默认继承了类java.lang.Enu ...

  7. java枚举类(enum) 基础知识讲解

    枚举类是在java 5后新增的,可以用于封装常量,并且还可以为常量的使用提供一些方法. 定义枚举类的语法: public enum EnumName{ 成员1(A,B...),成员2(A,B...), ...

  8. Java枚举类使用

    用法一:常量 在JDK1.5 之前,我们定义常量都是: public static fianl.... .现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法. p ...

  9. Java 枚举类详解

    1. 枚举类定义 在某些情况下,一个类的对象是有限而且固定的,比如季节类,它只有4个对象,这种实例有限而且固定的类,在Java里被称为枚举类. 2. 早期实现枚举的方式 public static f ...

随机推荐

  1. encodeURI和encodeURIComponent的区别

    这两个函数功能上面比较接近,但是有一些区别. encodeURI:不会进行编码的字符有82个 :!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z, ...

  2. ABAP 特殊透明表

    ADRC   地址 (业务地址服务)   存储所有的有关地址的记录 MSEG  凭证段:物料   存储物料的所有凭证(包括销售.交货.采购等) VBPA-VBELN(销售凭证)  VBPA-KUNNR ...

  3. zTree的使用

    一.节点模糊搜索功能:搜索成功后,自动高亮显示并定位.展开搜索到的节点. 二.节点异步加载:1.点击展开时加载数据:2.选中节点时加载数据. 前台代码如下: <script type=&quot ...

  4. 奇怪的电梯&lpar;HDU1548&rpar; (Dijkstra)或者(BFS)

    问题 E: 奇怪的电梯 时间限制: 1 Sec  内存限制: 64 MB提交: 35  解决: 16[提交][状态][讨论版] 题目描述 有一天桐桐做了一个梦,梦见了一种很奇怪的电梯.大楼的每一层楼都 ...

  5. WebForm 中的页面重定向和传值(转自 MSDN)

    ——原文地址:https://msdn.microsoft.com/zh-cn/library/6c3yckfw(v=vs.100).aspx      在开发 ASP.NET 网站时,您经常需要从一 ...

  6. Spring学习总结(0)——Spring详解

    一:spring的基本用法: 1,关于spring容器: spring容器是Spring的核心,该 容器负责管理spring中的java组件, ApplicationContext ctx  = ne ...

  7. 浅谈基于WOPI协议实现跨浏览器的Office在线编辑解决方案

    如今,基于Web版的Office 在线预览与编辑功能已成为一种趋势,而关于该技术的实现却成为了国内大部份公司的技术挑战,挑战主要存在于两方面: 其一:目前国内乃至微软本身,还没有相对较为完善的解决方案 ...

  8. vs2008单元测试

    调试是解决错误的过程,测试是发现软件缺陷的过程.每一个软件在交付使用时前都必须经过测试.软件测试是软件开发的重要组成部分,现在已经发展成专门的技术. 在消除了程序中的语法错误和运行错误后,程序仍然不能 ...

  9. 强势龙头股的 VOLM5&sol;35&sol;135 走势,可作为逃顶参考

    强势龙头股的 VOLM5/35/135 走势,可作为逃顶参考

  10. 排序算法的java实现

    冒泡.选择就不写了.很常见 一:插入排序: /** * 插入排序 */ public class P4_3 { static void insertSort(int[] a){ int j,t; /* ...