首页 > 其他分享 >枚举的使用场景

枚举的使用场景

时间:2024-08-07 20:07:12浏览次数:14  
标签:场景 System public 枚举 使用 println Day day

枚举的使用场景

目录

基本定义

public enum Day {
    SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY;
}

带属性的枚举

枚举可以拥有字段、方法和构造函数:

public enum Day {
    SUNDAY(0), MONDAY(1), TUESDAY(2), WEDNESDAY(3), THURSDAY(4), FRIDAY(5), SATURDAY(6);

    private int dayOfWeek;

    private Day(int dayOfWeek) {
        this.dayOfWeek = dayOfWeek;
    }

    public int getDayOfWeek() {
        return dayOfWeek;
    }
}

使用枚举

枚举的使用与类非常相似,你可以像使用类一样使用枚举:

public class Test {
    public static void main(String[] args) {
        Day day = Day.MONDAY;
        System.out.println("Today is " + day);
        System.out.println("Day of the week: " + day.getDayOfWeek());
    }
}

枚举方法

枚举可以有自己的方法,包括抽象方法:

public enum Operation {
    PLUS {
        public double apply(double x, double y) { return x + y; }
    },
    MINUS {
        public double apply(double x, double y) { return x - y; }
    };

    public abstract double apply(double x, double y);
}

枚举与switch语句

枚举常量可以用在switch语句中:

public class Test {
    public static void main(String[] args) {
        Day day = Day.MONDAY;
        switch (day) {
            case MONDAY:
                System.out.println("Mondays are tough.");
                break;
            case FRIDAY:
                System.out.println("Fridays are great!");
                break;
            default:
                System.out.println("Midweek.");
                break;
        }
    }
}

枚举迭代

可以使用values()方法遍历枚举的所有常量:

for (Day day : Day.values()) {
    System.out.println(day);
}

枚举与Java反射

枚举支持Java反射API,可以动态地获取枚举信息:

for (Day day : Day.values()) {
    String name = day.name();
    int ordinal = day.ordinal();
    System.out.println("Name: " + name + ", Ordinal: " + ordinal);
}

枚举实现接口

枚举可以实现接口,这使得枚举可以有行为:

public interface Vehicle {
    void drive();
}

public enum Car implements Vehicle {
    BUS {
        @Override
        public void drive() {
            System.out.println("Driving a bus.");
        }
    },
    CAR {
        @Override
        public void drive() {
            System.out.println("Driving a car.");
        }
    };

    @Override
    public abstract void drive();
}

枚举序列化

枚举类型默认实现了Serializable接口,这意味着枚举常量可以被序列化和反序列化。

枚举类提供了一种强大的方式来组织一组相关的常量,并且可以包含方法和属性,使得它们比传统的枚举更加灵活和强大。

标签:场景,System,public,枚举,使用,println,Day,day
From: https://www.cnblogs.com/luoyiwen123/p/18347806

相关文章

  • `EnumSet` 和 `EnumMap` 枚举类
    EnumSet和EnumMap枚举类目录EnumSet和EnumMap枚举类EnumSet创建EnumSetEnumSet操作EnumMap创建EnumMapEnumMap操作EnumSetEnumSet是基于位向量(bitvector)的集合实现,专为枚举类型设计,提供了非常高效的内存和性能表现。EnumSet不允许包含null元素,并且所有元素都必......
  • Nginx反向代理,代理H5前端 ,java后端,使用服务器+finalshell+vpn
    使用前确认已经安装好nginx,这里我使用的是普通的nginx,注意不是Docker版本的nginx输入nginx-t查询一下,自己的nginxconfig.nginx在那个包下,方便查询 使用catnginx.conf命令,进入需要配置的conf中(这个是我使用的server[server{listen82;s......
  • 枚举
    枚举的定义在Java中,枚举(enum)是一种特殊的类,它可以用来定义一组常量。枚举类型是Java语言的关键字,用于定义枚举类型。枚举类型提供了一种方式,可以保证变量的值只能是预定义的常量集合中的一个。以下是枚举的一些基本特性和用法:定义枚举:枚举类型定义使用enum关键字publicenum......
  • 如何使用反射
    如何使用反射通过Class对象的newInstance()方法packagecom.lut.study_java_demo1;​importjava.util.Scanner;​/***@authorZhou*@desc反射的使用*@date2024/8/716:13*/publicclass_21_new_reflect{  publicstaticvoidmain(String[]args)throws......
  • 使用dapper,因错误SQL字串拼接方式 导致的内存泄漏
    作者就职的公司在19年就开始使用.netcore并且部署到Linux上,这些年也遇到不少问题,有些问题都是使用土方法去解决,后面再慢慢写吧,准备将遇到的问题写成一个系列。 前情提要本次的项目是20年上线的储值卡系统,上线后发现内存缓慢增长(半个月涨到4G多),一直没有找到原因就让运维小伙伴......
  • 虚幻5|使用基本的攻击动画
    一,创建输入映射和数据资产1,2,点开数据资产添加映射,attack,输入为鼠标左键3.打开角色蓝图编写代码红圈可以不写是添加武器的文章内容这些变量要创建4.攻击动画蒙太奇是创建的数组,点击这个数组变量,右侧细节栏可添加蒙太奇动画二.创建动画蒙太奇,找到动画序列,右键后找到......
  • MacOS 中Boost的安装和使用
    Boost是一个功能强大、构造精巧、跨平台、开源并且完全免费的C++程序库,有着“C++‘准’标准库”的美誉,值得每位C++程序员学习使用。1安装Boost1.1使用源码安装下载Boost源码解压放在任意目录,例如/usr/local/boost_1_63_0./bootstrap.sh./b2headers./b2留意运行日......
  • 错误 C1128 节数超过对象文件格式限制: 请使用 /bigobj 进行编译
    错误C1128表示生成的对象文件(通常是.obj文件)中包含的节数超过了链接器的限制。这通常发生在项目包含大量代码或使用了大量模板时。解决方法是在编译时使用/bigobj选项。这个选项允许对象文件包含更多的节,从而避免这个错误。在VisualStudio中,可以通过以下几种方式......
  • 对象的使用与销毁
    对象的使用与销毁对象的使用创建对象:通过使用new关键字和类的构造器来创建对象。这会分配内存并调用构造器来初始化对象的状态。MyClassmyObject=newMyClass();访问对象:通过对象的引用变量来访问对象的属性和方法。myObject.someMethod();intvalue=myObject.som......
  • Python使用Memcached示例
    关注我,持续分享逻辑思维&管理思维&面试题;可提供大厂面试辅导、及定制化求职/在职/管理/架构辅导;推荐专栏《10天学会使用asp.net编程AI大模型》,目前已完成所有内容。一顿烧烤不到的费用,让人能紧跟时代的浪潮。从普通网站,到公众号、小程序,再到AI大模型网站。干货满满。学成后可......