JAVA学习--枚举类的使用

* 一、枚举类
 * 1.如何自定义枚举类
 * 2.如何使用enum关键字定义枚举类
 *    
>常用的方法:values() valueOf(String name)
 *    
>如何让枚举类实现接口:可以让不同的枚举类的对象调用被重写的抽象方法,执行的效果不同。(相当于让每个对象重写抽象方法)

 1 //普通枚举类
 2 class Season{
 3     //1.提供类的属性,声明为private final
 4     private final String seasonName;
 5     private final String seasonDesc;
 6     //2.声明为final的属性,在构造器中初始化。
 7     private Season(String seasonName,String seasonDesc){
 8         this.seasonName = seasonName;
 9         this.seasonDesc = seasonDesc;
10     }
11     //3.通过公共的方法来调用属性
12     public String getSeasonName() {
13         return seasonName;
14     }
15     public String getSeasonDesc() {
16         return seasonDesc;
17     }
18     //4.创建枚举类的对象:将类的对象声明public static final
19     public static final Season SPRING = new Season("spring", "春暖花开");
20     public static final Season SUMMER = new Season("summer", "夏日炎炎");
21     public static final Season AUTUMN = new Season("autumn", "秋高气爽");
22     public static final Season WINTER = new Season("winter", "白雪皑皑");
23     @Override
24     public String toString() {
25         return "Season [seasonName=" + seasonName + ", seasonDesc="
26                 + seasonDesc + "]";
27     }
28     public void show(){
29         System.out.println("这是一个季节");
30     }
31 }
//自定义枚举类
interface Info{
    void show();
}
//枚举类
enum Season1 implements Info{
    SPRING("spring", "春暖花开"){
        public void show(){
            System.out.println("春天在哪里?");
        }
    },
    SUMMER("summer", "夏日炎炎"){
        public void show(){
            System.out.println("生如夏花");
        }
    },
    AUTUMN("autumn", "秋高气爽"){
        public void show(){
            System.out.println("秋天是用来分手的季节");
        }
    },
    WINTER("winter", "白雪皑皑"){
        public void show(){
            System.out.println("冬天里的一把火");
        }
    };

    private final String seasonName;
    private final String seasonDesc;

    private Season1(String seasonName,String seasonDesc){
        this.seasonName = seasonName;
        this.seasonDesc = seasonDesc;
    }
    public String getSeasonName() {
        return seasonName;
    }
    public String getSeasonDesc() {
        return seasonDesc;
    }

    @Override
    public String toString() {
        return "Season [seasonName=" + seasonName + ", seasonDesc="
                + seasonDesc + "]";
    }
//    public void show(){
//        System.out.println("这是一个季节");
//    }
}

    public static void main(String[] args) {
        Season1 spring = Season1.SPRING;
        System.out.println(spring);
        spring.show();
        System.out.println(spring.getSeasonName());

        System.out.println();
        //1.values()
        Season1[] seasons = Season1.values();
        for(int i = 0;i < seasons.length;i++){
            System.out.println(seasons[i]);
        }
        //2.valueOf(String name):要求传入的形参name是枚举类对象的名字。
        //否则,报java.lang.IllegalArgumentException异常
        String str = "WINTER";
        Season1 sea = Season1.valueOf(str);
        System.out.println(sea);
        System.out.println();

        Thread.State[] states = Thread.State.values();
        for(int i = 0;i < states.length;i++){
            System.out.println(states[i]);
        }
        sea.show();

    }
时间: 2024-08-03 22:00:22

JAVA学习--枚举类的使用的相关文章

Java学习-023-Properties 类 XML 配置文件读取及写入源代码

之前的几篇 Properties 文章已经讲述过了 Java 配置文件类 Properties 的基本用法,查看 JDK 的帮助文档时,也可看到在 Properties 类中还有两个方法 loadFromXML(InputStream) 和 storeToXml(OutputStream, String, String),由方法名中的 xml 不难确定这两个方法分别是读取/写入数据到 xml 文件.JDK 文档部分如下所示: 因而此文将通过源码实例演示 Properties 类是如何将数据写入

Effective Java之枚举类

随着Effective Java这本书看的越来越多,发现在平时使用Java时犯了很多明显的错误,自己平时知道一点但缺少使用的也越来越多. 关于枚举类,书中的建议是用枚举类替代传统的静态常量,平时,如果一类数据用不同的数值表示,我正常的做法是写一串const static常量来表示,但看了这本书后发现,这样的表示方法虽然可以达到自己的目的,但是存在一些隐患,比如类型安全,还有,在使用上述方法区分不同的类型时,某一个具体的类型中的方法是在外面用过判断然后调用的,在这种情况下,代码就变得不是很漂亮.

Java 之枚举类

在某些情况下,一个类的对象是有限而且是固定的,比如季节类,它只有4个对象.这种实例有限而且固定的类,在Java里被称为枚举类. 在早期,可能会直接使用简单的静态常量来表示枚举类,例如: public static final int SEASON_SPRING = 1; public static final int SEASON_SUMMER = 2; public static final int SEASON_FAIL = 3; public static final int SEASON

疯狂java笔记-枚举类

1 //手动实现枚举类 2 //步骤 3 1.通过private将构造器隐藏起来 4 2.把这个类的所有可能的实例都使用public static final修饰的类变量来保存 5 3.如果有必要,可以提供一些静态方法,允许其他程序根据特定的参数来获取与之匹配的实例 6 public class Season{ 7 //把Season类定义成不可变的,将其Field也定义成final 8 private final String name; 9 private final String desc

JAVA学习--Calendar 类的应用

Calendar 类的应用 Date 类最主要的作用就是获得当前时间,同时这个类里面也具有设置时间以及一些其他的功能,但是由于本身设计的问题,这些方法却遭到众多批评,不建议使用,更推荐使用 Calendar 类进行时间和日期的处理. java.util.Calendar 类是一个抽象类,可以通过调用 getInstance() 静态方法获取一个 Calendar 对象,此对象已由当前日期时间初始化,即默认代表当前时间,如 Calendar c = Calendar.getInstance();

Java之枚举类的基本用法

创建枚举类 package com.ywlaker.enums; /** * @功能描述:季节枚举类 * @author yang.wei * @time 2015年9月1日 上午11:56:23 * @version 0.0.1 */ public enum Season { SPRING("春天","spring"), SUMMER("夏天","summer"), AUTUMN("秋天","a

Java学习笔记--类和对象

1.介绍面向对象的编程 面向对象是现在主流的编程样例,它替代了以前C语言使用时的"结构体",Java是一门面向对象的语言,所以需要熟悉面向对象的概念.面向对象的程序由很多对象组成,每个函数对于用户而言,都有特殊的功能.程序里面的很多对象都可以直接从公共库里面拿来直接用.不用去研究这些功能怎么去实现的.传统的结构的编程由一系列算法步骤来解决问题.一旦这些步骤确定下来,也要同时确定存储数据的方式.也就是数据结构一开始学习的:算法+数据结构=程序. 先决定算法,再决定使用什么样的结构来存储数

java学习笔记--类ArrayList和LinkedList的实现

在集合Collection下的List中有两个实现使用的很频繁,一个是ArrayList,另一个是LinkedList,在学习中肯定都会有这样的疑问:什么时候适合使用ArrayList,什么时候用LinkedList?这时,我们就需要了解ArrayList和LinkedList的底层的实现,下面,为了更好的了解它们具体是怎样实现的,我们来写自己的ArrayList 和LinkedList. ArrayList底层是基于数组实现的,数组在内存中是存储在连续的存储单元中,在数据查找的时候比较快,适用

Java之枚举类

有时候,变量的取值只在一个有限的集合内. 例如:pizza的大小只有小.中.大和超大这四种尺寸.当然,可以将这些尺寸分别编码为1.2.3.4或者S.M.L.X.但这样存在着一定的隐患.在变量中很有可能保存的是一个错误的值(如0和m). 针对这种情况,可以自定义枚举类型.枚举类型包括有限个命名的值.例如, enum Size{SMALL,MEDIUM,LARGE,EXTRA_LARGE}; 现在,可以声明这种类型的变量: Size s = Size.MEDIUM; Size类型的变量只能存储到这个