转自: 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. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 辅助类:强制元素隐藏

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  2. VueCli3 项目结构和具体作用

  3. drugs

    1. 摘录:未来简史 2. 毒品禁药扫盲 3. 毒品争议 4. 部分毒品列表 5. 影视作品里常出现的几种毒品 1. 摘录:未来简史 第一章 人类的新议题 幸福快乐的权利 (P36) 人们喝酒是为了遗 ...

  4. SSH框架搭建 笔记 (含spring注解驱动)

    分类: web 开发2014-04-27 12:33 354人阅读 评论(0) 收藏 举报 框架springinterface注解 好久没有搭建框架了,今天整理下以前的知识,整合下SSH,没想到手生了 ...

  5. Python字符串魔法方法

    isalpha()判断是否权威字母或者汉字 isdecimal()(十进制小数)    isdigit()  判断是否为数字 特殊数字 isdigit()判断更为厉害   也是判断数字  都返回Tru ...

  6. gitlab导入备份数据

    1.将南阳的gitlab 迁入到本地80虚拟机 由于本地ip地址没有固定,所以,是本地去拉取南阳的代码,虽然,之后固定了ip,但,由于只用一次这样的操作,所以,还是一直在做拉取而不是推送的工作 2.具 ...

  7. 吴裕雄--天生自然JAVA数据库编程:JDBC操作步骤及数据库连接操作

    public class ConnectionDemo01{ // 定义MySQL的数据库驱动程序 public static final String DBDRIVER = "org.gj ...

  8. SPFA和堆优化的Dijk

    朴素dijkstra时间复杂度$O(n^{2})$,通过使用堆来优化松弛过程可以使时间复杂度降到O((m+n)logn):dijkstra不能用于有负权边的情况,此时应使用SPFA,两者写法相似. 朴 ...

  9. SCHema学习

    <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http:/ ...

  10. Thinkcmf任意漏洞包含漏洞分析复现

    简介 ThinkCMF是一款基于PHP+MYSQL开发的中文内容管理框架,底层采用ThinkPHP3.2.3构建.ThinkCMF提出灵活的应用机制,框架自身提供基础的管理功能,而开发者可以根据自身的 ...