Java枚举类型 enum

定义

An enum type is a special data type that enables for a variable to be a set of predefined constants. The variable must be equal to one of the values that have been predefined for it.

枚举类型是一种特殊数据类型,能够为一个变量定义一组预定义的常量。变量必须等于为其预定义的值之一。

枚举类型是Java 5中新增特性的一部分,它是一种特殊的数据类型,之所以特殊是因为它既是一种类(class)类型却又比类类型多了些特殊的约束,但是这些约束的存在也造就了枚举类型的简洁性、安全性以及便捷性。

枚举是特殊的类,可以拥有成员变量和方法。

使用

public enum Direction {//实例列表末尾的分号是可选的NORTH, SOUTH, EAST, WEST
}

Direction类型的实例可以按静态变量的方式引用:Direction.NORTH,Direction.EAST

在开发中枚举可以用来定义常量

@Getter
public enum TaskStatueEnum {NOTSTARTEND(1,"未开始"),EXECUTIONINPROGRESS(2,"执行中"),COMPLETED(3,"已完成");
  
  private int val;
  private String descript;

  TaskStatueEnum(int val, String descript)
  {
   this.val=val;
   this.descript=descript;
  }

  public static TaskStatueEnum fomart(int val) throws Exception {
  for(TaskStatueEnum property: TaskStatueEnum.values())
  {
   if(val==property.val)
   {
   return property;
   }
   }
   throw new Exception(MessageFormat.format("找不到对应{0}的任务状态",val));
  }
}

详解和注意

1>.枚举类型都隐式继承了java.lang.Enum类,因此不能继承其他类,但可以实现接口;

​ 2>.枚举类型只能有私有的构造方法(java运行时创建,外部不能进行实例化);

​ 3>不能泛型化;

​ 4>当有字段和方法时,枚举常量的列表必须以分号结尾;

​ 5>编译器在创建枚举时会自动添加一些特殊方法。例如,它们具有一个静态values方法。

通过javap命令反编译class文件可以看出,并且它是被final修饰的,不能被继承。
​$ javap Color.class
Compiled from "Color.java"
public final class com.zuoquan.lt.basic.enums.Color extends java.lang.Enum<com.zuoquan.lt.basic.enums.Color> {public static final com.zuoquan.lt.basic.enums.Color RED;public static final com.zuoquan.lt.basic.enums.Color GREEN;public static final com.zuoquan.lt.basic.enums.Color BULE;public static com.zuoquan.lt.basic.enums.Color[] values();public static com.zuoquan.lt.basic.enums.Color valueOf(java.lang.String);public int getIndex();public void setIndex(int);public java.lang.String getName();public void setName(java.lang.String);static {};
}

values方法使用:

Color[] colors = Color.values();
for (Color color : colors) {System.out.println(color.getName());
}

​ 6>父类Enum中的方法

S.N.Method & 描述
1protected Object clone() 该方法将抛出CloneNotSupportedException异常
2int compareTo(E o) 这种方法比较枚举指定对象的顺序.
3boolean equals(Object other) 此方法返回true,如果指定的对象是相等于枚举常量.
4protected void finalize() 此方法返回枚举类不能有finalize方法.
5Class getDeclaringClass() 此方法返回此枚举常量的枚举类型相对应的类对象.
6int hashCode() 此方法返回枚举常量的哈希码.
7String name() 此方法返回枚举常量的名称,正是因为在其枚举声明中声明.
8int ordinal() 此方法返回此枚举常量的序数(其枚举声明中的位置,其中初始常量被分配一个序号零).
9String toString() 此方法返回枚举常量的名称,在声明中所包含的.
10static > T valueOf(Class enumType, String name) 此方法返回具有指定名称的指定枚举类型的枚举常量.

https://blog.csdn.net/javazejian/article/details/71333103

 

转载于:https://www.cnblogs.com/mengw/p/11332622.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/423706.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ps学习1:去除图片上的文字

首先我们看到如图所示的图&#xff0c;这个时候我们要给他右上角的文字去除 首先打开我们的ps工具--我登陆的在线ps教程 https://www.uupoop.com/ 点击编辑---填充 保存 完成修改

Git学习(3)GitHub和SVN的区别

GitHub和SVN的区别 之前用的版本控制系统是SVN&#xff0c;但是最近因为流行使用GitHub&#xff0c;这篇文章认识一下Git和SVN的区别。 1&#xff09;Git是分布式的&#xff0c;SVN不是&#xff1a; 这 是git和其它非分布式的版本控制系统&#xff0c;例如SVN&#xff0c;CVS等…

位运算 中度难度 子集

怎样将一个字符串中的单词单独存放在一个单词数组里&#xff1f; #include <iostream> #include <cstdio> #include <vector> #include <sstream> #include <string> using namespace std; int main() {string str[100];string str1 "i lo…

python3获取两个日期之间所有日期,以及比较大小

原创 2017年10月09日 14:00:14标签&#xff1a;python 1370 [python] view plaincopy import datetime [python] view plaincopy #获取两个日期间的所有日期 def getEveryDay(begin_date,end_date): date_list [] begin_date datetime.datetime.strptime(be…

关于换行符

在正则表达式中&#xff0c;有一个\n是newline的意思&#xff0c;又有一个\r是carriage return(就是这个导致了白痴中文翻译"回车")的意思 在处理String或者console输出的时候&#xff0c;无论带上哪个都能换行。 但是偏偏在txt中&#xff0c;哪个都不是标准的换行&a…

Java面试题15牛客 以下关于Integer与int的区别错误的是

Java面试题15牛客 以下关于Integer与int的区别错误的是 A int是java提供的8种原始数据类型之一 B Integer是java为int提供的封装类 C int的默认值为0 D Integer的默认值为1 懵逼树上懵逼果&#xff0c;懵逼树下你和我&#xff0c;这题难度一般&#xff0c;很显然&#xff…

用示例说明BitMap索引的效率要优于B-Tree索引

一、实验说明&#xff1a; 操作系统&#xff1a;rhel 5.4 x86 数据库&#xff1a;Oracle 11g R2 二、操作步骤&#xff1a; 首先创建一张t_btree表&#xff0c;并建立B-Tree索引&#xff0c;索引键是status&#xff1a; 1 SQL> create table t_btree as select * from dba_o…

使用grep -v时候,想去除多个pattern

使用grep -v时候&#xff0c;想去除多个pattern 原创 2014年05月27日 14:01:033845 grep -v with multiple patternsgrep test somefile | grep -v -e error -e critical -e warninggrep test somefile | grep -vE (error|critical|warning)grep test somefile | grep -vE err…

ISA Server 2004 0x80004005错误

客户的一台ISA Server EE中文版&#xff0c;运行服务器管理出现如下问题&#xff1a; “ISA服务器无法加载属性页”详细信息“错误&#xff1a;0x80004005未指定的错误”点“继续”后提示“管理单元初始化失败”&#xff0c;“确定”后再次弹出“ISA服务器无法加载属性页”的提…

Java面试题16 牛客 以下java程序代码,执行后的结果是()

Java面试题16 牛客 以下java程序代码&#xff0c;执行后的结果是&#xff08;&#xff09; 1 2 3 4 5 6 7 8 9 10 public class Test { public static void main(String[] args) { Object o new Object() { public boolean equals(Object o…

Singularity 介绍

"...it is impossible to predict how a singularity will affect objects in its causal future." - NCSA Cyberia Glossary 一些有用的连接&#xff1a; Microsoft Research Singularity Project Singularity RDK Singularity: Rethinking Dependable System De…

Hive压缩说明

为什么要压缩 在Hive中对中间数据或最终数据做压缩&#xff0c;是提高数据吞吐量和性能的一种手段。对数据做压缩&#xff0c;可以大量减少磁盘的存储空间&#xff0c;比如基于文本的数据文件&#xff0c;可以将文件压缩40%或更多。同时压缩后的文件在磁盘间传输和I/O也会大大减…

Java面试题17 牛客 下面哪个选项正确创建socket连接?

Java面试题17 牛客 下面哪个选项正确创建socket连接&#xff1f; Socket s new Socket(8080); Socket s new Socket(“192.168.1.1”,8080) SocketServer s new Socket(8080); Socket s new SocketServer(“192.168.1.1”,8080) 懵逼树上懵逼果&#xff0c;懵逼树下你…

视频素材网站

http://soft.dvedit.cn/soft/05/down-2172.html 转载于:https://www.cnblogs.com/liuguanghuiyes/archive/2008/10/04/1303830.html

kubelet源码学习(一):kubelet工作原理、kubelet启动过程

本文基于Kubernetes v1.22.4版本进行源码学习 1、kubelet工作原理 1&#xff09;、kubelet核心工作 kubelet的工作核心就是一个控制循环&#xff0c;即&#xff1a;SyncLoop&#xff08;图中的大圆圈&#xff09;。而驱动这个控制循环运行的事件&#xff0c;包括&#xff1a;P…

算法导论课后习题解析 第四章 下

4.5-1a) $$a2,b4,f(n)\Theta(1),\log_b a \frac 12 \gt 0 $$ 符合情况1&#xff0c;$ T(n) \Theta (n^{1/2})$ b) $$a2,b4,f(n)\Theta(n^{1/2}),\log_b a \frac 12 $$ 符合情况2&#xff0c;$ T(n) \Theta (n^{1/2}\lg n)$ c) $$a2, b4, f(n)\Theta(n),\log_b a \frac 1…

Java面试题18 牛客 假定Base b = new Derived();

Java面试题18 牛客 假定Base b new Derived&#xff08;&#xff09;; 调用执行b.methodOne&#xff08;&#xff09;后&#xff0c;输出结果是什么&#xff1f; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 public class Base { public…

python获取当前时间和前一天时间

import time time.strftime(%Y%m%d) //获取了当前时间的年月日 datetime&#xff1a; 获取昨天的时间 import datetime now_time date time.datetime.now() yes_time now_time date time.timedelta(days-1) yes_time_nyr yes_time.strftime(%Y%m%d)//格式化输出

ReactOS,硬件抽象层,HAL概述

分析环境reactos0.3.4 &#xff0c;i386体系] ReactOS的硬件抽象层 HAL(Hardware Abstraction Layer)位于OS与硬件的中间&#xff0c;和windows的hal原理基本一致&#xff0c;硬件抽象层隐藏特定平台的硬件接口细节&#xff0c;为上层的系统提供标准的稳定的虚拟硬件平台&…

[给ASP.NET 初学者的话]不要练功练了三年,才发现自己必须「砍掉重练」!....学习ASP.NET之前,请先把自己杯中的水倒掉...

这是我的文章备份&#xff0c;原文请看&#xff1a; [给ASP.NET 初学者的话]不要练功练了三年&#xff0c;才发现自己必须「砍掉重练」&#xff01;....学习ASP.NET之前&#xff0c;请先把自己杯中的水倒掉 http://www.dotblogs.com.tw/mis2000lab/archive/2012/03/15/game_ove…