枚举类型

java enum(枚举)使用详解

拜拜、爱过 提交于 2019-12-06 02:22:45
枚举enum 创建枚举,需要用 enum关键字,隐含创建的类型都是java.lang.Enum的子类(Enum是一个抽象类) 枚举类型符合通用模式 Class Enum<E extends Enum<E>>,而 E 表示枚举类型的名称 每个枚举类型的值都会被映射到这个构造函数中 protected Enum(String name, int ordinal) { this.name = name; this.ordinal = ordinal; } //定义一个枚举 public enum Color { RED, YELLO, GREEN;//此处分号可有可无 } //给枚举设置值 public enum Color { RED(1),// YELLO(2), GREEN(0);//此处要有分号 private int value; Color(int value) { this.value = value; } public int getValue() { return value; } } [color=red]这段代码实际上 new 了三个对象,就像三个静态的对象一样[/color] 来源: CSDN 作者: hioaduf 链接: https://blog.csdn.net/hioaduf/article/details/84684407

java枚举类型 Enum

偶尔善良 提交于 2019-12-06 02:22:00
Java 5新增的 enum 关键词,可以定义枚举类。 该类是一个特殊的类,可以定义自己的 field、方法、可以实现接口,也可以定义自己的构造器 。 但枚举类使用enum定义后在编译后默认继承了 java.lang.Enum 类,而不是普通的继承Object类。 enum声明类继承了 Serializable 和 Comparable 两个接口。且采用enum声明后,该类会被编译器加上 final声明 (同String),故 该类是无法继承的 。 枚举类的内部定义的枚举值就是该类的实例( 且必须在第一行定义,当类初始化时,这些枚举值会被实例化 )。 由于这些枚举值的实例化是在类初始化阶段,所以应该将枚举类的构造器(如果存在),采用 private 声明(这种情况下默认也是private,也必须是private的)。 另外补充一点,由于JVM类初始化是线程安全的,所以可以采用枚举类实现一个线程安全的单例模式。 enum 对象的常用方法介绍 int compareTo(E o) 比较此枚举与指定对象的顺序。 Class<E> getDeclaringClass() 返回与此枚举常量的枚举类型相对应的 Class 对象。 String name() 返回此枚举常量的名称,在其枚举声明中对其进行声明。 int ordinal() 返回枚举常量的序数(它在枚举声明中的位置

Java Enum 枚举类型

大憨熊 提交于 2019-12-06 02:21:41
Java Enum Enum 一般用来表示一组相同类型的常量。如性别、日期、月份、颜色等。对这些属性用常量的好处是显而易见的,不仅可以保证单例,且比较时候可以用 ”==” 来替换 equals 。是一种好的习惯。 JDK1.5 之前没有 Enum 这个类型。 枚举类型安全,可以不让非法的数据作为参数传入。 枚举是类,可以实现接口,并且是常用的实例化控制手段( 可以理解为对象池) ,很多单例写成枚举。 还可以在枚举中声明抽象方法,在不同的枚举值中实现该方法,以达到工厂方法的目的。       如何使用 Java Enum   简单的用法: JavaEnum 简单的用法一般用于代表一组常用常量,可用来代表一类相同类型的常量值。如: //性别 public enum SexEnum { male , female ; } //颜色 public enum Color { RED , BLUE,GREEN,BLACK ; }   枚举对象里面的值都必须是唯一的。   可以通过 Enum 类型名直接引用该常量,如 SexEnum.male,Color.RED.   复杂用法: Java 为枚举类型提供了一些内置的方法,同事枚举常量还可以有自己的方法。可以很方便的遍历枚举对象,看个下面的例子:    //WeekDay.java /** * @author admin 定义一个枚举类型

java enum的使用以及字符串其字符串之间的转换

浪子不回头ぞ 提交于 2019-12-06 02:21:13
文章简单,相信在很多网站都能搜索到java enum枚举的使用方式;可能有些东西我当时在刚开始用的时候没找到,所以我写了这篇文章,例如: 大多数地方写的枚举都是给一个枚举然后例子就开始switch,可是我想说,我代码里头来源的数据不太可能就是枚举,通常是字符串或数字,比如一个SQL我解析后首先判定SQL类型,通过截取SQL的token,截取出来可能是SELECT、DELETE、UPDATE、INSERT、ALTER等等,但是都是字符串,此时我想用枚举就不行了,我要将字符串转换成枚举怎么转呢,类似的情况还有从数据库取出数据根据一些类型做判定,从页面传入数据,根据不同的类型做不同的操作,但是都是字符串,不是枚举,悲剧的是我 很少 看到有人写到这个东西;所以我把它写下来,希望有人能用到。 首先为什么要用枚举?我们在什么时候用枚举比较好,用枚举有啥优势? 我认为哈,当你在一些一个范畴类,并可列举,不变化的类型,用以指导程序向不同的地方路由,用枚举是较好的选择; 听起来有点绕,不过有个例子也许可以明白,例如: 我们可以列举下日常工作日所做的事情: 上班、开会、吃饭、睡觉等 我们可以列举医院五官科需要检查人的部位: 眼睛、鼻子、耳朵、嘴巴等 这些都是 可以被列举 的,且 每种事情我们要用不同的方式去做 ; 当然你可以说: 1、可以用动态方法分派,通过配置文件或annotation; 2

Java Enum 枚举类

廉价感情. 提交于 2019-12-06 02:20:55
Java Enum 枚举类及其用法(2017.09.12) 语法定义: 创建枚举类型要使用enum关键字,隐含了所创建的类型都是java.lang.Enum类的子类(java.lang.Enum是一个抽象类)。枚举类型符合通用模式Class Enum<E extends Enum<E>>,而E表示枚举类型的名称。枚举类型的每一个值都将映射到protect Enum(String name, int ordinal)构造函数中,在这里,每个值得名称都被转换成一个字符串,并且序数设置表示了此设置被创建的顺序。 Example: public enum EnumTest{ MON, TUE, WED, THU, FRI, SAT, SUN; } 上面的代码实际上调用了7次Enum(String name, int ordinal); new Enum<EnumTest>("MON", 0); new Enum<EnumTest>("TUE", 1); ...... 遍历、switch等常用操作 public class Test{ public static void main(String[] args){ for(EnumTest e : EnumTest.values()){ System.out.println(e.toString());//依次输出MON TUE WED ..

java之enum枚举类

吃可爱长大的小学妹 提交于 2019-12-06 02:20:40
实质上定义出来的类型继承自 Java.lang.Eum 类型, 枚举的成员其实就是我们定义的枚举类型的一个实例 Instance, 被预设为 final ,所以无法改变他们,他们也是 static 成员,所以可以通过类型名称直接使用他们。 他们都是公开的 public ,枚举中的每一个成员默认都是 public static final 的,而每个枚举的成员就是我们的枚举类型的一个实例 instance ,换句话说,当定义了一个枚举类型后,在编译时刻就能确定枚举类型有几个类型,分别是什么,在运行期间我们无法在使用该枚举类型创建新的实例了,这些实例在编译期间就已经完全确定下来了,所以在 Color myColor = Color.Red 中,没有 newColor(), 而是直接复制 枚举,成员默认类型, public static final ,有几个类型就有几个实例 instance 枚举像一个类,又像一个数组 它不能有 public的构造函数,这样做可以保证客户代码没有办法新建一个enum的实例。 所有枚举值都是 public , static , final的。注意这一点只是针对于枚举值 Enum默认实现了java.lang.Comparable接口 Enum覆载了了toString方法,因此我们如果调用Color.Blue.toString()默认返回字符串”Blue

Java枚举类型(enum)简介

久未见 提交于 2019-12-06 02:17:25
该示例是在百度上搜到的: public class TestEnum{ /*最普通的枚举*/ public enum ColorSelect{ red, green, yellow, blue; } /* 枚举也可以象一般的类一样添做加方法和属性,你可以为它添加静态和非静态的属性或方法,这跟类的使用是一样的 */ public enum Season { // 枚举列表必须写在最前面,否则编译出错 winter, spring, summer, fall; private final static String location = "Phoenix"; public static Season getBest() { if (location.equals("Phoenix")) return winter; else return summer; } } /*还可以有构造方法*/ public enum Temp { /*通过括号赋值,而且必须有对应的带参构造器,否则编译出错 * 赋值必须是都赋值或都不赋值,不能一部分赋值一部分不赋值 * 如果不赋值则不能写构造器,赋值编译也出错*/ absoluteZero(-459), freezing(32),boiling(212), paperBurns(451); private final int value; public

JAVA枚举类型(Enum)的使用

风格不统一 提交于 2019-12-06 02:17:06
在现实社会中,有些类的实例对象是固定的。例如季节,只有春夏秋冬。如果你创建了一个season类,你当然有义务维护这个类的实例对象只能是春(SPRING)、夏(SUMMER)、秋(AUTUMN)、冬(WINTER)这四个。这个时候就体现出枚举类的作用了,java中枚举类型就是针对这样的场景需求所设计的。 /** * 枚举类的后缀建议为Enum,枚举类型的实例对象建议全大写(这样做符合JAVA的规范) */ public enum SeasonEnum{ SPRING,SUMMER,AUTUMN,WINTER } 让我们来看看怎么使用SeasonEnum这个枚举类。 public class Test{ public static void main(String[] args) { String summer = "SUMMER"; //通过valueOf,获取SUMMER的枚举类型 SeasonEnum season2 = SeasonEnum.valueOf(summer); //直接初始化 SeasonEnum season1 = SeasonEnum.SPRING; switch (season1) { case SPRING: System.out.println("春天"); break; case SUMMER: System.out.println("夏天");

scala函数式编程

…衆ロ難τιáo~ 提交于 2019-12-06 00:51:40
 结构  学会使用Scala中主要的结构控制语句  数组  学会数组的声明与使用  映射  了解Scala中的映射的基础知识  包与引用 Scala控制结构  判断(if表达式)  循环(while/do语句)  枚举(for表达式)  匹配(match表达式)  异常处理(throw/try)  输出(print/println)  输入(readLine) 判断(if表达式)  检测语句是否为真,并执行之后的语句  if(A) B ; else C (“ ;”号能省略吗?)  A可以是任意返回布尔值的语句,或是布尔值的量,真则执行B,假则执行C;  当B为空时,可写成 if(!A) C  def min(x:Int,y:Int):Int={ var a=x if(x>y) a=y return a }  if表达式能用以赋值  def min(x:Int,y:Int)= if(x>y) y else x 循环(while/do)  while语句包括状态判断与循环体,只要当前状态判断为真,就执行循环体一遍;然后 进行下一次状态判断,判断为假时终止循环。  while(A) B  do语句与while相反,先执行循环体一遍,然后进行状态判断,状态判断为真,则继续 执行循环体,否则终止循环。  do B while(A)  m -

Java基础_枚举类型

感情迁移 提交于 2019-12-05 22:58:52
  作用:让数据更简洁,更易读,增加代码可读性。   为了用1,2,3,4,5分别表示老师,学生,小组,班主任,后勤,可以直接设置一个变量,让roleType = 1,但这样写代码可读性差。   也可以定义一个成员类,分别给不同的静态成员赋1,2,3,4,5,在需要调用的地方,直接通过RoleType.xxx去进行变量的赋值,如下: package com.Gary2; public class CustomEnum { public static void main(String[] args) { //1老师 2学生 3小组 4班主任 5后勤 //可读性差 // int roleType = 2; // int roleType2 = 5; //学生 int roleType = RoleType.STUDENT; //后勤 int roleType2 = RoleType.LOGISTICS; } } RoleType.java package com.Gary2; public class CustomEnum { public static void main(String[] args) { //1老师 2学生 3小组 4班主任 5后勤 //可读性差 // int roleType = 2; // int roleType2 = 5; //学生 int roleType