中秋佳节--理解Enum枚举

一.Enum枚举的作用

1.使用枚举可以限定取值范围,枚举中定义的每个常量都可以理解为对象;

Eg:

  Public enum Color{

       RED, GREEN,BULE;

}

说明:RED实际上就表示的是枚举的名称,默认的编号是0,可以使用ordinal()方法获得。

2.使用enum关键字定义枚举类,其中包含的对象可以初始化定义(初始化构造函数)

Eg:

package cn.test.java.enums;
enum ColorDemo{
     RED("红色"),GREEN("绿色"),BLUE("蓝色");

     private String name;
     private ColorDemo(String name){
         this.setName(name);
     }
     public void setName(String name){
         this.name = name;
     }
     public String getName(){
         return this.name;
     }
}
public class ConstructorEnum {

    public static void main(String[] args) {
        for(ColorDemo c : ColorDemo.values()){
            System.out.println(c.ordinal()+"--->"+c.name()+"("+c.getName()+")");
        }
    }
}

说明:在枚举类中定义属性及自己的构造方法,但是一旦定义有参数构造之后,在声明枚举对象的时候,就必须明确的调用构造方法,并进行传递参数。

3.在枚举中实际上已经实现好Comparable接口,所以枚举中的内容是可以排序的;

Eg:

package cn.test.java.enums;
enum ColorDemo{
     RED("红色"),GREEN("绿色"),BLUE("蓝色");

     private String name;
     private ColorDemo(String name){
         this.setName(name);
     }
     public void setName(String name){
         this.name = name;
     }
     public String getName(){
         return this.name;
     }
}
public class ConstructorEnum {

    public static void main(String[] args) {
        for(ColorDemo c : ColorDemo.values()){
            System.out.println(c.ordinal()+"--->"+c.name()+"("+c.getName()+")");
        }
    }
}

二.EnumMap 和EnumSet的使用

EnumMap是Map类的子类,所以它的所有方法都是从Map类中继承过来的,使用方法如下

Eg:

package cn.test.java.enums;
import java.util.EnumMap;
import java.util.Map;

public class EunmMapDemo {

    public static void main(String[] args) {
        Map<Color,String> desc = null;
        desc = new EnumMap<Color,String>(Color.class);
        desc.put(Color.blus,"蓝色");
        desc.put(Color.green,"绿色");
        desc.put(Color.red,"红色");
        System.out.println("===输出全部内容");
        for(Color c : Color.values()){
            System.out.println(c.name()+"--->"+desc.get(c));
        }
        System.out.println("===输出全部键");
        for(Color c: desc.keySet()){
            System.out.println(c.name()+"、");
        }
        System.out.println();
        System.out.println("=== 输出全部值");
        for(String s:desc.values()){
            System.out.println(s+"、");
        }
    }
}

EnumSet类是Set类中的子类,它使用方法中都是以静态形式继续该类方法

Eg:

package cn.test.java.enums;
import java.util.EnumSet;
public class EunmSetDemo {
    public static void main(String args[]){
        EnumSet<Color> es = null ;            // 声明一个EnumSet对象
        System.out.println("===EnumSet.allOf(Color.class) =====") ;
        es = EnumSet.allOf(Color.class) ;    // 将枚举的全部类型设置到EnumSet对象之中
        print(es) ;
    }
    public static void print(EnumSet<Color> temp){    // 专门的输出操作
        for(Color c:temp){        //  循环输出EnumSet中的内容
            System.out.print(c + "、") ;
        }
        System.out.println() ;
    }
};

三.枚举类的其他使用

1.枚举类型可以跟普通类一样实现接口,从但是实现接口的时候 要求枚举中的每个对象都必须单独覆写接口中的抽象方法。

Eg:

package cn.test.java.enums;
interface Print{
    public String getColor();
}
enum Colors implements Print{
    RED{
        public String getColor(){
            return "红色";
        }
    },
    GREEN{
        public String getColor(){
            return "绿色";
        }
    },
    BLUS{
        public String getColor(){
            return "蓝色";
        }
    };
}
public class InterfaceEunmDemo {

    public static void main(String[] args) {
        for(Colors c:Colors.values()){
            System.out.println(c.getColor()+"、");
        }
    }
}

2.枚举类中定义了抽象方法,但是要求枚举中的每个对象都分别实现此抽象方法。

Eg:

package cn.test.java.enums;
enum ColorDemo2 implements Print{
    RED{
        public String getColor(){
            return "红色";
        }
    },
    GREEN{
        public String getColor(){
            return "绿色";
        }
    },
    BLUS{
        public String getColor(){
            return "蓝色";
        }
    };
}
public class AbstractMethodEunm {

    public static void main(String[] args) {
        for(ColorDemo2 c: ColorDemo2.values()){
            System.out.println(c.getColor()+"、");
        }
    }
}
时间: 2024-10-13 07:41:32

中秋佳节--理解Enum枚举的相关文章

String、StringBuffer、enum枚举

1.字符串相关类 1)string类代表不可变的字符系列. 2)stringBuffer,Buffer就是缓冲区,代表的是可变的字符系列. 这可变和不可变的是怎么理解呢? 如图,不是a的字符系列改变了,只是 开辟了一份新的内存,然后重新把a指向了 新的内存.这样就耗费时间空间.所以 stringBuffer就可以解决这个问题. 2.enum枚举(定义一种新的类型) 定义并且限定变量,也就是说定义出的变量必须是这种类型.看起来很象是特殊的class, 它也可以有自己的变量,可以定义自己的方法,可以

深入理解 Java 枚举

目录   1. 简介  2. 枚举的本质  3. 枚举的方法  4. 枚举的特性  5. 枚举的应用  6. 枚举工具类  7. 小结  8. 参考资料 ?? 本文已归档到:「javacore」 ?? 本文中的示例代码已归档到:「javacore」 1. 简介 enum 的全称为 enumeration, 是 JDK5 中引入的特性. 在 Java 中,被 enum 关键字修饰的类型就是枚举类型.形式如下: enum ColorEn { RED, GREEN, BLUE } 枚举的好处:可以将常

java之enum枚举(2015年05月28日)

背景: 今天启动了一个新的项目,由于要从之前的旧项目中拿过来一些代码,所以就看了下公司之前项目代码,发现有定义的常量类,也有枚举类,然后就在想着两者的功能差不多,那他们之间到底有什么区别呢,所以就决定了解下enum枚举   一.简介 Java 中的枚举类型采用关键字enum 来定义,从jdk1.5才有的新类型,所有的枚举类型都是继承自Enum 类型. 二.基本用法 1.作为常量使用 一个完整的枚举类型示例 /** * 枚举 * @author Dreyer * @since 1.0 * @dat

enum枚举类型的定义

enum枚举类型的定义方式与某种用法 #include <iostream> using namespace std; int main() { enum TOT{ zero, one, two, three, four, five };//0,1,2,3,4,5 TOT to1; to1 = five; switch (to1) { case 0:cout << "zero\n"; break; case 1:cout << "one\n

C语言——enum枚举类型

enum是枚举类型,实际上就是定义一组值,enum定义数据类型的值只能是这一组值中的一个. 在实际生活中,很多问题都与是这样的.如人的性别,只有男女两种:一星期有七天:月份只有十二个值. 如下定义一周七天的值: #include <stdio.h> typedef enum { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday }week; int main() { printf("%d %d %d %d %

开发中巧用Enum枚举类型

在实际开发中,在数据库表设计中,我们往往习惯于用一个Int类型的State字段去表示数据的状态,这个字段很方便去表示这条数据的状态,但是又不愿意去建一张这个State字段的外键表去解释状态.(这一类型表状态的字段可能还会有很多,这里只是举个例)   我们一般会把这个State字段当成一个约定,去在项目中应用(比如:0:启用,1:禁用) 在后台管理或其它地方显示Int类型对应的实际状态时,再到公共类中去写一个方法,里面用一个switch...case去返回对应的中文解释. http://www.d

Java Enum枚举

1.代码 import java.lang.*; // enum showing Mobile prices enum Mobile { Samsung(400), Nokia(250),Motorola(325); int price; Mobile(int p) { price = p; } int showPrice() { return price; } } public class EnumDemo { public static void main(String args[]) {

中秋佳节

马上迎来一年一度的中秋佳节了,对自己想说的就是要加油了.自己还有很多地方的欠缺,写的代码不多,更多的时候是在用库的时候看文档能力还非常欠缺,一定要把所学的用出来,学以致用方能成大才.在中秋佳节的三天里,自己要多去看看书,学无止境,平常有时候上班没什么时间看书,现在有点时间了,就得分配些时间来看书,理论与实践并行,总之就是加油,艺无止境的学习下去.虽然对大神的概念非常懵懂,但是自己非常需要去努力,目前知道的就这么多,希望能跟着师傅好好学!在此中秋佳节,妈妈的身体好起来.各路大神,欢迎留言给我意见!

获取Enum枚举值描述的几法方法

原文:获取Enum枚举值描述的几法方法 1.定义枚举时直接用中文 由于VS对中文支持的很不错,所以很多程序员都采用了此方案. 缺点:1.不适合多语言 2.感觉不太完美,毕竟大部分程序员大部分代码都使用英文 2.利用自定义属性定义枚举值的描述(博客园-大尾巴狼) 缺点:不适合多语言 原文:http://www.cnblogs.com/hilite/archive/2006/03/28/360793.html 枚举定义: [EnumDescription("订单.订单中的产品.产品项的状态.&quo