Java枚举与注解的创建步骤

 更新时间:2021年06月23日 10:30:52   作者:DTFT_W  
这篇文章通过抽象的概念和具体实现步骤,充分说明了java枚举与注解的概念和使用方法,通过该篇文章你可以学会如何自定义枚举类和了解部分Java内置注解,希望对你有所帮助

枚举

自定义枚举类

创建方法

  1. 将构造器私有化,防止直接new
  2. 去掉setXXX方法,防止属性直接被修改
  3. 在类的内部,直接创建固定的对象
  4. 优化:在创建对象时添加final修饰,类就不会被加载

注意事项

  • 对枚举对象/属性使用final+static共同修饰,实现底层优化
  • 枚举对象名通常使用全部大写
  • 枚举对象根据需要,也可以有多个属性

关键字Enum枚举类

创建步骤

  1. 使用关键字enum替代class
  2. public static final Season SPRING = new Season("春天","温暖");直接使用SPRING("春天","温暖"):常量名(实参列表)
  3. 如果使用无参构造器创建枚举对象,则实参列表和小括号都可以省略
  4. 如果有多个常量(对象),使用,间隔,最后一个用分号;
  5. 如果使用enum来实现枚举类,要求将定义的常量对象,必须写在类的行首

image-20210611130036924

注意事项

使用enum关键字后就不能继承其他类了,因为enum会隐式继承Enum类,而java是单继承

枚举类 和普通类一样,可以实现接口

enum 类名 implements 接口1,接口2{}

**个人理解:**枚举类就是一个类,里面的枚举对象就是创建好的对象放在里面

public class test {
  public static void main(String[] args) {
   Color color = Color.RED;
   switch (color){
       case RED:
           color.show();
           break;
       case BLUE:
           color.show();
           break;
       default:
           break;
   }
  }
}

public interface Show {
    public void show();
}
public enum Color implements Show{
    RED(255,0,0),BLUE(0,0,255),BLACK(0,0,0),YELLOW(255,255,0),GREEN(0,255,0);

    private int redValue;
    private int greenValue;
    private int blueValue;

     Color(int redValue,int greenValue,int blueValue){
         this.redValue = redValue;
         this.greenValue = greenValue;
         this.blueValue = blueValue;
    }

    @Override
    public void show(){
  System.out.println("red:"+this.redValue+",green:"+this.greenValue+",blue:"+this.blueValue);
    }
}

Enum成员方法

  • toString:返回当前对象名,子类可以重写
  • name:返回当前对象名(常量名),子类中不能重写
  • ordinal:返回当前对象的位置号,默认从0开始
  • values:返回一个数组,包含当前枚举类的所有常量
  • valueOf:将字符串转换成枚举对象,要求字符串为已有的常量名,否则报异常
  • comparaTo:比较两个枚举常量,比较的就是位置号

例:创建一个枚举类并打印其中的常量对象

public class EnumExercise {
  public static void main(String[] args) {
    System.out.println("=====遍历枚举=======");
    Week[] weeks = Week.values();
    for (Week week :weeks){
      System.out.println(week);
    }
  }
}

enum Week{

    Monday("星期一"),Tuesday("星期二"),Wednesday("星期三"),Thursday("星期四");
    private String name;

    private Week(String name) {
        this.name = name;
    }
    @Override
    public String toString(){
        return name;
    }
}

注解

  • 用于修饰解释、包、类、方法、属性、构造器、局部变量等数据信息
  • 注解不影响程序逻辑,但注解可以编译或运行,相当于嵌套在代码中的补充信息
  • 在java SE 中,注解使用目的比较简单,例如标记过时的功能、忽略警告等;在java EE 中,用来配置应用程序的任何切面,代替java EE 旧版本中所遗留的繁冗代码和xml配置等

@override

用于限定某个方法,是重写父类方法,该注解只能用于方法

如果写了@override,编译器会检查该方法是否真的重写了父类的方法;相当于提醒编译器校验

如果没写,如果父类有对应方法,一样的构成重写

image-20210611231906304

@Deprecated

  • 用于表示某个程序元素(类、方法)已过时
  • 可以修饰类、方法、包、字段、参数
  • 用作版本升级过度时使用

@SuppressWarnings

  • 抑制编译器警告
  • 不希望看到警告时,可以用这个注解来抑制编 译器

image-20210611232547481

  • 作用范围:和放置的位置有关

元注解(了解)

  • @Retention:用于修饰一个注解,指定该注解可以保留多长时间

image-20210611234142958

  • @Target:用于修饰一个注解,指定被修饰的注解能修饰哪些元素;target包含一个value的成员变量
  • @Documented:用于指定被修饰的注解类将被javadoc工具提取成文档
  • @Inherited:子类会继承被这个注解修饰的注解

总结

到此这篇关于Java的枚举与注解的文章就介绍到这了,更多相关枚举与注解内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 利用Java实现红黑树

    利用Java实现红黑树

    红黑树是众多“平衡的”搜索树模式中的一种,在最坏情况下,它相关操作的时间复杂度为O(log n),接下俩小编将子啊下文详细介绍Java是如何实现红黑树的
    2021-09-09
  • Java中java.lang.ClassCastException异常原因以及解决方法详解

    Java中java.lang.ClassCastException异常原因以及解决方法详解

    这篇文章主要给大家介绍了关于Java中java.lang.ClassCastException异常原因以及解决方法的相关资料,ClassCastException从字面上看是类型转换错误,通常是进行强制类型转换时候出的错误,需要的朋友可以参考下
    2024-02-02
  • 详解配置类为什么要添加@Configuration注解

    详解配置类为什么要添加@Configuration注解

    这篇文章主要介绍了详解配置类为什么要添加@Configuration注解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • springboot themaleaf 第一次进页面不加载css的问题

    springboot themaleaf 第一次进页面不加载css的问题

    这篇文章主要介绍了springboot themaleaf 第一次进页面不加载css的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • Java中csv文件读写超详细分析

    Java中csv文件读写超详细分析

    CSV是一种通用的、相对简单的文件格式,其文件以纯文本形式存储表格数据,下面这篇文章主要给大家介绍了关于Java中csv文件读写分析的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • Java实现Kafka生产者和消费者的示例

    Java实现Kafka生产者和消费者的示例

    这篇文章主要介绍了Java实现Kafka生产者和消费者的示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • Java数据结构之稀疏矩阵定义与用法示例

    Java数据结构之稀疏矩阵定义与用法示例

    这篇文章主要介绍了Java数据结构之稀疏矩阵定义与用法,结合实例形式分析了java稀疏矩阵的定义、运算、转换等相关操作技巧,需要的朋友可以参考下
    2018-01-01
  • Java如何判断字符串中是否包含某个字符

    Java如何判断字符串中是否包含某个字符

    这篇文章主要介绍了Java如何判断字符串中是否包含某个字符,可以使用String类的contains()方法,另一种方法使用String类的indexOf方法,本文结合示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-02-02
  • SpringBoot 中大文件(分片上传)断点续传与极速秒传功能的实现

    SpringBoot 中大文件(分片上传)断点续传与极速秒传功能的实现

    这篇文章主要介绍了SpringBoot 中大文件(分片上传)断点续传与极速秒传功能的实现,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • SpringBoot接收各种各样参数的示例详解

    SpringBoot接收各种各样参数的示例详解

    参数映射准确来说是springmvc来帮我们干的活,但是由于springboot太过火爆,简化了springmvc相关配置文件,以至于很多人会误认为是springboot的功能,本文将给大家介绍SpringBoot接收各种各样参数,文中有详细的代码讲解,需要的朋友可以参考下
    2024-04-04

最新评论