首页 > 其他分享 >枚举和注解

枚举和注解

时间:2024-03-24 16:00:38浏览次数:12  
标签:String Season name 枚举 注解 public desc

枚举类引出

  1. 需求:要求创建季节Seaaon对象,请设计并完成EnumerationClass在这里插入图片描述
public class l6 {

    public static void main(String[] args) {
        // 使用
        Season spring = new Season("春天", "温暖");
        Season summer = new Season("夏天", "炎热");
        Season autumn = new Season("秋天", "干燥");
        Season winter = new Season("冬天", "严寒");
        // winter.setName("大梵天");
        // winter.setDesc("desc");
        // 因为对于季节,它的对象(具体值),是固定的四个,不会有更多对象
        // 按照这这种设计思路,不能体现季节是固定的四个对象。此设计不好
        Season other = new Season("黄天", "12");
    }
}

class Season {// 类
    private String name;
    private String desc;// 描述

    public Season(String name, String desc) {
        this.name = name;
        this.desc = desc;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }

}

自定义枚举类

  1. 枚举是一组常量的集合
  2. 枚举属于一种特殊类,里面只包含一组有限的特定对象
  3. 枚举的两种实现方法:1)自定义实现枚举2)使用enum关键字实现枚举
  4. 自定义枚举类的小结
    1)不需要提供SetXxx方法,因为枚举对象值通常为只读
    2)对枚举对象/属性的使用final+static共同修饰,实现底层优化(顺序无所谓)
    3)枚举对象名通常使用全部大写,常量的命名规范
    4)枚举对象根据需要,也可以有多个属性

class Enumeration02 {
    public static void main(String[] args) {
        System.out.println(Season.AUTUMN);
    }
}

// 演示自定义枚举实现
class Season {// 类
    private String name;
    private String desc;// 描述
    public static final Season SPRING = new Season("春天", "温暖");
    public static Season SUMMER = new Season("夏天", "炎热");
    public static final Season AUTUMN = new Season("秋天", "干燥");
    public static Season WINTER = new Season("冬天", "严寒");

    // 1。将构造器私有化:防止直接new
    // 2.去掉set相关方法:只能读不能修改
    // 3.在Season类部,直接创建规定的对象
    // 4.优化:静态属性会导致Season加载。。。可以再加入finak修饰
    private Season(
            String name, String desc) {
        this.name = name;
        this.desc = desc;
    }

    public String getName() {
        return name;
    }

    public String getDesc() {
        return desc;
    }

    @Override
    public String toString() {
        return "Season [desc=" + desc + ", name=" + name + "]";
    }

}
  1. 进行自定义类实现枚举类有一下特点:
    1)构造器私有化
    2)本类内部创建一组对象[SPRING,夏秋冬]
    3)对外暴露对象(通过为对象添加final+static修饰符)
    4)可提供gat方法,但不提供set方法

enum关键字实现枚举类

class Enumeration02 {
    public static void main(String[] args) {
        System.out.println(Season2.SPRING);
    }
}

// 演示使用enum关键字来实现枚举类
enum Season2 {// 类
    // public static final Season SPRING = new Season("春天", "温暖");
    // public static Season SUMMER = new Season("夏天", "炎热");
    // public static final Season AUTUMN = new Season("秋天", "干燥");
    // public static Season WINTER = new Season("冬天", "严寒");
    // 1.使用关键字enum替代class
    // 2.public static final Season SPRING = new Season("春天", "温暖")直接使用SPRING("春天",
    // "温暖")--------常量名(实参列表)
    // 3.如果有多个常量(对象),使用逗号间隔
    // 4.如果使用enum实现枚举,要求将定义常量对象写在最前面
    SPRING("春天", "温暖"),
    AUTUMN("秋天", "干燥");

    private String name;
    private String desc;// 描述

    private Season2(
            String name, String desc) {
        this.name = name;
        this.desc = desc;
    }

    public String getName() {
        return name;
    }

    public String getDesc() {
        return desc;
    }

    @Override
    public String toString() {
        return "Season [desc=" + desc + ", name=" + name + "]";
    }

}

  1. enum关键字实现注意事项
    1)当我们使用enum关键字开发一个枚举类时,默认会继承Enum类:使用javap工具
    在这里插入图片描述

在这里插入图片描述
2)传统的public static final Season SPRING = new Season(“春天”, “温暖”)直接简化成SPRING(“春天”,“温暖”),必须知道调用哪个构造器
3)如果使用无参构造器创建枚举类对象,则实参列表和小括号都可以省略

class Enumeration02 {
    public static void main(String[] args) {
        System.out.println(Season2.SPRING);
        System.out.println(Season2.WINTER);
    }
}

// 演示使用enum关键字来实现枚举类
enum Season2 {// 类
    // public static final Season SPRING = new Season("春天", "温暖");
    // public static Season SUMMER = new Season("夏天", "炎热");
    // public static final Season AUTUMN = new Season("秋天", "干燥");
    // public static Season WINTER = new Season("冬天", "严寒");
    // 1.使用关键字enum替代classc
    // 2.public static final Season SPRING = new Season("春天", "温暖")直接使用SPRING("春天",
    // "温暖")--------常量名(实参列表)
    // 3.如果有多个常量(对象),使用逗号间隔
    // 4.如果使用enum实现枚举,要求将定义常量对象写在最前面
    SPRING("春天", "温暖"),
    AUTUMN("秋天", "干燥"),
    WINTER(), SUMMER;// 这两种写法都是调用无参构造器

    private String name;
    private String desc;// 描述

    private Season2() {
    }// 无参构造器

    private Season2(
            String name, String desc) {
        this.name = name;
        this.desc = desc;
    }

    public String getName() {
        return name;
    }

    public String getDesc() {
        return desc;
    }

    @Override
    public String toString() {
        return "Season [desc=" + desc + ", name=" + name + "]";
    }

}

4)当有多个枚举类对象时,使用逗号间隔,最后分号结束
5)枚举对象必须放在枚举类的行首

  1. enum关键字课堂练习
    下面代码是否正确???
enum Gender{
BOY,GIRL;
}

正确正确
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
所有输出------BOY
常量对象是静态的,所以输出-----true

标签:String,Season,name,枚举,注解,public,desc
From: https://blog.csdn.net/m0_52921880/article/details/126535755

相关文章

  • C语言:结构体,联合体和枚举(2)
      一:结构体1.结构体对齐规则:规则4: 如果嵌套了结构体的情况,嵌套的结构体成员对齐到自己的成员中最大对齐数的整数倍处,结构体的整体大小就是所有最大对齐数(含嵌套结构体中成员的对齐数)的整数倍。例子4://结构体嵌套结构体structS3{ doubled;// 8 8 8 charc; // ......
  • 20240322,结构类型,枚举,
     一,枚举1.1常量符号化 程序中用符号表达数字,增加程序的可读性?#include<stdio.h>//能跑,但是报错不推荐将字符串转为CHAR**constintred=0;constintyellow=1;constintgreen=2;//为撒在前面?intmain(intargc,charconst*argv[]){ //两个参数,整数,字符串数组......
  • Java 枚举(超详细讲解)
    Java语言的强大之处在于它提供了多种多样的类库,从而大大提高了程序的编程效率和质量。一、枚举事先考虑到某一变量可能的取值,尽可能用自然语言忠表意清楚的单词来表示它的每一个值,用这中思路定义的类型被称为枚举类型。枚举事由一组固定的常量组成的类型。在Java中每个枚......
  • Java-Java基础学习(5)-注解和反射以及类的加载过程分析
    4.1注解的理解Annotation是从JDK5.0开始引入的新技术Annotation的作用不是程序本身,可以对程序作出解释(这点和注释comment没什么区别);可以被其他程序(比如:编译器等)读取;Annotation的格式注解是以“@注释名”在代码中存在的,还可以添加一些参数值,例如:@SuppressWarnings(v......
  • Spring6--基于注解管理Bean / 手写IOC
    1.基于注入管理Bean概念Java5引入了注解(Annotation)这一特性,它允许程序员在源代码中插入元数据,这些元数据以标签形式存在,可以被编译器、类加载器或运行时环境所识别和处理。注解可以帮助开发者在不修改业务逻辑的前提下,向代码中添加额外的描述性信息,比如标记服务、组件、属......
  • 自定义类型--结构体、联合体、枚举类型
    **Ladiesandgentlemen**,今天,我们将来进行对自定义类型的学习!目录1.结构的特殊声明2.结构体内存对齐2.1对齐规则2.1.12.1.22.1.32.1.42.2为什么存在内存对齐?1.平台原因(移植原因):2.性能原因:2.3修改默认对齐数3.结构体传参4.结构体实现位段4.1什么......
  • 枚举——熄灯问题
    有一个由按钮组成的矩阵,其中每行有6个按钮,共五行每个按钮的位置上有一盏灯当按下一个按钮后,该按钮以及周围位置(上下左右)的灯都会改变状态如果灯原来是点亮的,就会被熄灭如果灯原来是熄灭的,则会被点亮在矩阵角上的按钮改变3盏灯的状态在矩阵边上的按钮改变4盏灯的状态其他的......
  • @Autowired注解与@Resource注解
    1.包来源@Autowired注解是spring框架自带的。@Resource注解是JDK扩展包中,使用需要引入(jdk8-11不需要引入)。2.装配规则@Autowired注解默认是根据类型byType装配,如果想根据名称装配,需要配合@Qualifier注解一起使用。@Resource注解默认根据名称byName装配,未指定name时,使用属性名......
  • 良心干货,常见的MySQL索引类型枚举!!!
    在MySQL中,索引是一种用于快速查询和检索数据的数据结构。它们类似于书籍的目录,可以帮助数据库系统更快地定位到特定的数据行,而不需要扫描整个数据表。索引可以显著提高查询性能,特别是在处理大量数据时。MySQL支持多种类型的索引,每种索引都有其特定的使用场景和优势。以下是......
  • 结构体&&联合&&枚举(详解版)
    1.结构体    1.结构体的声明structtag{member-list;}variable-list;    2.结构体的特殊声明struct{inta;charb;floatc;}x;struct{inta;charb;floatc;}a[20],*p;                 上述代码属于匿名结构体类型......