转自: 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. pip使用镜像的方法

    http://e.pypi.python.org/这个就是官网了,清华大学提供的 建议非清华大学校内的使用这个镜像: http://e.pypi.python.org/simple(这也是一个http ...

  2. 二 sql语句,常用字段数据类型

    MySQL中常用DDL命令   database definition language  与 DML命令 :  database definition language 操作数据库: 创建数据库 : ...

  3. 守神漏洞扫描器V1.2

    主界面 指纹利用 漏洞库 怎么说呢,个人感觉这个扫描器跟小哲的Test404Fuzzer差不多~ 就是功能多了旁站查询.C段查询.而且这款工具的exp比Test404Fuzzer的多了几个~ 总体来说 ...

  4. 【剑指Offer面试编程题】题目1369:字符串的排列--九度OJ

    题目描述: 输入一个字符串,按字典序打印出该字符串中字符的所有排列.例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba. 输入: 每个 ...

  5. IDEA中maven工程打包时使用跳过test模式

  6. stm32CubeMx工程使用GCC编译

    软件: STM32CubeMx 5.0 GCC编译器 STM32 ST Link Utility 下载器:ST Link V2 1  安装gcc编译器 能编译ARM Cortex M核的GCC编译器下 ...

  7. class中static总结-静态成员函数和静态成员变量

    C++规定const静态类成员可以直接初始化,其他非const的静态类成员需要在类声明以外初始化,我们一般选择在类的实现文件中初始化,初始化的方式是书写一遍类型的定义: //A.cpp ); //使用 ...

  8. 蓝牙 BLE 协议学习: 000-有关概念介绍

    背景 在学校内就用过蓝牙技术参加过比赛(并拿了奖):而蓝牙作为物联网中比较常见的协议,有必要进行深入的学习.此后的文章会以 ble(v4.0) 进行学习. 介绍 蓝牙技术最初由电信巨头爱立信公司于 1 ...

  9. 用 Weave Scope 监控集群【转】

    创建 Kubernetes 集群并部署容器化应用只是第一步.一旦集群运行起来,我们需要确保一起正常,所有必要组件就位并各司其职,有足够的资源满足应用的需求.Kubernetes 是一个复杂系统,运维团 ...

  10. HIWORD HIBYTE

    #include "pch.h" #include <iostream> #include<Windows.h> int main() { ; WORD i ...