转自: http://blog.sina.com.cn/s/blog_697b968901013ih1.html

这里主要讲解的是Java的枚举类型

什么是枚举?
以我的理解答:枚举是我们自己定义的一个集合,比如说我们数学里面所学的集合A={1、2、3},当我们要使用A这个集合的时候,我们只能够使用集合A里面的1、2、3这三个元素,不是A里面的元素我们就不可以使用。
同样,枚举和这个集合是类似的,当我们定义了一个枚举类型的时候,我们声明它里面有几个元素,在我们使用这个枚举的时候,我们只能够使用它有的元素,没有的元素我们是无法使用,系统就会报错!
枚举还有一个特点,就是可以代表数值,比如说第一个定义的元素对应的值为0,每个枚举元素从0开始,逐一增加。此时,这个数值也代表他们本身,相当于每一个元素有两个名字。
 
常使用的地方:我们要从另一个函数得到一个值,但是这个值只能够在一个范围内的,此时我们就可以使用枚举来定义这个范围。限制另外一个函数能够传递进来的值,只能够是枚举类型里面的元素
 
下面我们讲解一下java该如何使用枚举
 
 
枚举类型:                        
1、我们可以这样来定义一个枚举类型
public enum Color{
Red,Blue,Black,Green;
}
 
然后可以这样来使用:Color myColor = Color.Red  
 
2、枚举类型提供了两个有用的静态方法 values( ) 和 valueOf( ) 我们可以很方便的使用它们,
      例如:  for(Color c : Color.values( ))
                   System.out.println(c);
 
 
3、例如:
package Enum;
public class ColorTest {
public static void main(String[] args) {
Color myColor = Color.Red;
System.out.println(myColor);
System.out.println("........................");
for(Color color:Color.values()){
System.out.println(color);
}
}
}
 
4、在 switch() 括号中一共可以5种类型:char、short、int、long、enum(枚举类型)
 
可将枚举作为方法的参数,通过在方法中做相应的判断,作出不同的结果。
 
package Enum;
 
public class EnumTest01 {
public static void doWhat(OP op){
switch(op){
case TURE_LEFT:
System.out.println("向u24038 转);
break;
case TURE_RIGHT:
System.out.println("向u21491 转);
break;
case SHOOT:
System.out.println("射u20987 ");
break;
}
}
public static void main(String[] args) {
EnumTest01.doWhat(OP.SHOOT);
}
}
 
enum OP{
TURE_LEFT,TURE_RIGHT,SHOOT;
}
 
输出结果:射击
 
5、定义枚举类型时本质上就是定义一个类别,只不过很多细节由编译器帮我们完成了,所以某些程度上,enum关键字的作用 就像是class或interface
6、当我们使用“enum”定义枚举类型时,实质上我们定义出来的类型继承自java.lang.Enum类型,而枚举的成员其实就是我们定义的枚举类型的一个实例(Instance),他们都被预设为final,所以我们无法改变他们,他们也是static成员,所以我们可以通过类型名称直接使用他们,当然最重要的,他们都是公开的(public)。
即,我们定义的每个枚举类型都继承自java.lang.Enum类,枚举中的每一个成员默认都是public static final 的。
而每个枚举的成员其实就是我们定义的枚举类型的一个实例(Instance)。换句话说,当定义了一个枚举类型后,在编译时刻就能确定该枚举类型有几个实例,分别是什么。在运行期间我们无法再使用该枚举类型创建新的实例了,这些实例在编译期间就已经完全确定下来了。  所以在:Color myColor = Color.Red   中,没有new Color()。而是直接赋值
 
package Enum;
 
public enum Coin {
banjin("半u26020 "),baliang("八u20004 "),qingyuan("清u28170 "),liping("莉u-31731 ");
private String name;
Coin(String name){
this.name = name;
}
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public static void main(String[] args) {
Coin coin = Coin.baliang;
System.out.println(coin.getName());
}
}
 
输出:八两
 
7、通过coin.ordinal()来得到枚举所代表的值,即每个枚举元素从0开始,逐一增加
 
8、
//检查权限之类的,如一个经理、员工、顾客对一个工具的使用权限,一般用枚举来处理     因为这样子可以用来控制传入判断的参数只能够是该枚举类型的数,从而限制传入的参数。
 
package Enum;
 
public class AccessControl {
public static boolean checkRight(AccessRight access){
if(access == AccessRight.MANAGER){
return true;
}
else if(access == AccessRight.DEPARMENT){
return false;
}
else 
return false;
}
public static void main(String[] args) {
System.out.println(checkRight(AccessRight.DEPARMENT));
}
}
 
enum AccessRight{
MANAGER,DEPARMENT,EMPLOYEE;
}
 
 
通过这样,只能够传递AccessRight类型的参数,其他参数都是不合法的。
 
9、
static <T extends Enum<T>> 
 valueOf(Class<T> enumType, String name) 
          返回带指定名称的指定枚举类型的枚举常量。 
 
可以这样子使用 AccessRight access = AccessRight.valueOf("MANAGER");//只要AccessRight中有MANAGER的元素就可以返回这个元素,即将String类型转换为AccessRight类型

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枚举类

    enum关键字用于定义枚举类,若枚举只有一个成员, 则可以作为一种单例模式的实现方式.   枚举类对象的属性不应允许被改动, 所以应该使用 private final 修饰. 枚举类的使用 priva ...

  6. 【JAVA】浅谈java枚举类

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

  7. Java枚举类enum

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

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

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

  9. Java枚举类使用

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

  10. Java 枚举类详解

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

随机推荐

  1. Input输入框日期控件

    案例 https://pan.baidu.com/s/1i6BNLcT   密码:p77m

  2. 全球定位IP位置 2018(离线版)

    球定位IP位置 2018(离线版) 这次写的软件使用Python写的,所以体积可能有点大 我特地写了GUI打包成了Exe可执行文件,方便小白使用== 只要输入目标ip就能显示目标所在的国家城市和经纬度 ...

  3. PaperReading20200226

    CanChen ggchen@mail.ustc.edu.cn   To share or not share Motivation: With the publiaction of NAS101, ...

  4. Linux命令:date命令

    date命令作用:显示和设置系统的日期和时间 一.设置系统日期时间 格式:date [MMDDhhmm[[CC]YY][.ss]] 举例:将当前系统时间改为 2020年10月1日12点10分 # da ...

  5. 【随缘更(gu)】牛客D4简要思路(没有题解)

    T1 当然不能枚举每个区间,于是我们考虑算贡献. 对于每个位置i,我们计算其作为区间内第一个出现ai的位置的区间总数,则有ans=sigma( i - last[i] ) * ( n - i + 1 ...

  6. 回文数索引(string类erase解题)

    题目描述 给定一个仅由小写字母组成的字符串.现在请找出一个位置,删掉那个字母之后,字符串变成回文.请放心总会有一个合法的解.如果给定的字符串已经是一个回文串,那么输出-1. 输入描述: 第一行包含T, ...

  7. 嵊州普及Day6T1

    题意:有一个矩形,由正负整数构成.一个位子的魅力值为相邻的格子,若与邻格同号则减去绝对值,若异号则加上绝对值. 思路:一个格子一个格子计算即可,没什么好说的. 见代码: #include<ios ...

  8. PostGIS 常用函数中文介绍说明

    1.OGC标准函数 管理函数: 添加几何字段 AddGeometryColumn(, , , , , ) 删除几何字段 DropGeometryColumn(, , ) 检查数据库几何字段并在geom ...

  9. Jquery实现列表增删改

    //需求:对列表的增删改  //代码如下 <!DOCTYPE html> <html lang="en"> <head> <meta ch ...

  10. springboot2.1mysql驱动类弃用

    Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdb ...