专栏首页学习笔记持续记录中...Java基础:五、枚举类型 (10)

Java基础:五、枚举类型 (10)

public enum Spiciness{
    NOT,MILD,MEDIUM,HOT,FLAMING
}

这里创建了一个名为Spiciness的枚举类型,它具有5个具名值,由于枚举类型的实例是常量,因此按照命名惯例它们都用大写字母表示(如果在一个名字中有多个单词,用下划线将它们隔开)

为了使用enum,需要创建一个该类型的引用,并将其赋值给某个实例:

public class SimpleEnumUse{
    public static void main(String[] args){
        Spiciness howHot = Spiciness.MEDIUM;
        System.out.println(howHot);
    }
}

在你创建enum时,编译器会自动添加一些有用的特性。例如,它会创建toString()方法,以便你可以很方便地显示某个enum实例的名字,这正是上面的打印语句如何产生其输出的答案。编译器还会创建ordinal()方法,用来表示某个特定enum常量的声明顺序,以及static values()方法,用来按照enum常量的声明顺序,产生由这些常量值构成的数组

public class EnumOrder{
    public static void main(String[] args){
      for(Spiciness s: Spiciness.values()){
          System.out.println(s + ", ordinal " + s.ordinal());
        }
    }
}

由于switch是要在有限的集合中进行选择,enum可以在switch语句中使用

public class Burrito{
    Spiciness degree;
    public Burrito(Spiciness degree){
        this.degree = degree;
    }

    public void describe(){
        System.out.println("this burrito is");
        swtich(degree){
            case NOT: System.out.println("not spicy at all");break;
            case MILD:
            case MEDIUM:System.out.println("a little hot");break;
            case HOT;
            case FLAMING:
            default: System.out.println("maybe too hot.");
        }
    }
    public static void main(String[] args){
        Burrito plain = new Burrito(Spiciness.NOT);
        Burrito greenChile = new Burrito(Spiciness.MEDIUM:System);
        Burrito jalaeno = new Burrito(Spiciness.HOT);
        plain.describe();
        greenChile.describe();
        jalaeno.describe();
    }
}

大体上,你可以将enum用作另外一个创建数据类型的方式,然后直接将所得到的类型拿来使用,这正是关键所在。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • TestNG用法概括

    应用场景:将通用的功能抽取并封装起来,在方法中使用注解@BeforeSuite和@AfterSuite,在测试类中继承这个类,测试类在运行前会先运行@Befor...

    桑鱼
  • Spring - 通过注解配置Bean(8)

    特定组件包括: Component:基本注解,标识了一个受Spring管理的组件 Respository:标识持久层组件 Service: 标识服务层(业...

    桑鱼
  • Spring - 泛型依赖注入(9)

    桑鱼
  • 使用C#开发数据库应用程序

    用户1112962
  • SpringBoot整合Quartz定时任务 的简单实例

    POM.XML文件 <!-- 定时器任务 quartz需要导入的坐标 --> <dependency> <groupId...

    庞小明
  • 初学java之接口基础

    1 /* 2 长城牌电视机 3 联想奔月5008PC机 4 */ 5 6 7 package st; 8 //接口回调实例 9 in...

    Gxjun
  • 线程间的通信

    何时使用 在多线程环境下,有时候一个线程的执行,依赖于另外一个线程的某种状态的改变,这个时候,我 们就可以使用wait与notify或者notifyAll ...

    Dream城堡
  • 程序、进程、线程的关系

    创建一个Java线程常见的有两种方式: 1.继承Thread类 两种表示方法: (1).外部类 import java.util.D...

    汤高
  • 线程的创建

    创建一个Java线程常见的有两种方式: 1.继承Thread类 两种表示方法: (1).外部类 import java.util.D...

    汤高
  • Omega系统简介

    1.背景 Google的论文Omega:flexible,scalable schedulers for large compute clusters中把调度分...

    大数据和云计算技术

扫码关注云+社区

领取腾讯云代金券