广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java的枚举,注解和反射(一)
  • 721
分享到

Java的枚举,注解和反射(一)

2024-04-02 19:04:59 721人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录枚举什么是枚举?枚举类的实现自定义实现枚举类使用关键字enum定义枚举类Enum的常用方法实现接口的枚举类注解注解概述常见的注解总结枚举 什么是枚举? 枚举的字面意思就是 一一列

枚举

什么是枚举?

枚举的字面意思就是 一一列举出来

数学和计算机科学理论中,一个集的枚举是列出某些有穷序列集的所有成员的程序,或者是一种特定类型对象的计数。这两种类型经常(但不总是)重叠。是一个被命名的整型常数的集合,枚举在日常生活中很常见,例如表示星期的SUNDAY、MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY、SATURDAY就是一个枚举。再比如线程的状态:创建、运行、阻塞、等待、消亡,这也是一个枚举。

在java中的枚举也是类似的:

枚举是在jdk1.5以后引入的。主要用途是:将一组常量组织起来。

当需要定义一组常量的时候就可以使用枚举。枚举的对象是有限的、确定的。

枚举本身就是一个类,其构造方法默认为私有的。

如果枚举类的对象只有一个,则可以作为单例模式的一种实现方式。

枚举类的实现

自定义实现枚举类

jdk1.5之前使用自定义的方式实现枚举类的定义


package enumDemo;

public class EnumDemo1 {
    public static void main(String[] args) {
        Season spring = Season.SPRING;
        System.out.println(spring);
    }
}
//自定义实现季节的枚举类
class Season {
    //1.首先要求枚举类是常量,就可以使用 private final 来修饰
    private final String seasonName;
    private final String seasonDesc;
    //2.常量肯定要赋值,提供私有的构造方法来初始化常量
    private Season(String seasonName, String seasonDesc) {
        this.seasonName = seasonName;
        this.seasonDesc = seasonDesc;
    }
    //3.枚举的对象是有限个的,确定的。所以要提供对应的枚举对象
    public static final Season SPRING = new Season("春天", "春暖花开");
    public static final Season SUMMER = new Season("夏天", "夏日炎炎");
    public static final Season AUTUMN = new Season("秋天", "秋高气爽");
    public static final Season WINTER = new Season("冬天", "冰天雪地");
    //提供获取枚举的属性的方法
    public String getSeasonName() {
        return seasonName;
    }
    public String getSeasonDesc() {
        return seasonDesc;
    }
    @Override
    public String toString() {
        return "Season{" +
                "seasonName='" + seasonName + '\'' +
                ", seasonDesc='" + seasonDesc + '\'' +
                '}';
    }
}

在这里插入图片描述

使用关键字enum定义枚举类

jdk1.5引入enum关键字


package enumDemo;
import org.junit.Test;

public class EnumDemo2 {
    @Test
    public void test(){
        SeasonEnum spring = SeasonEnum.SPRING;
        System.out.println(spring);
        //枚举类的父类是
        System.out.println("枚举类的父类是:"+SeasonEnum.class.getSuperclass().getName());
    }
}
enum SeasonEnum{
    //提供当前枚举类的对象,之间使用","隔开,最后一个对象使用";"隔开
    SPRING("春天","春暖花开"),
    SUMMER("夏天","夏日炎炎"),
    AUTUMN("秋天","秋高气爽"),
    WINTER("冬天","冰天雪地");

    private final String seasonName;
    private final String seasonDesc;
    private SeasonEnum(String seasonName,String seasonDesc){
        this.seasonName = seasonName;
        this.seasonDesc = seasonDesc;
    }
}

在这里插入图片描述

Enum的常用方法


package enumDemo;
import org.junit.Test;

public class EnumDemo3 {
    @Test
    public void test() {
        //toString方法
        System.out.println(SeasonEnum.SPRING.toString());
        System.out.println("****************************");
        //values方法.
        SeasonEnum[] seasonEnums = SeasonEnum.values();
        System.out.println("季节枚举类中的对象:");
        for (SeasonEnum seasonenum : seasonEnums) {
            System.out.println(seasonenum);
        }
        System.out.println("****************************");
        //线程状态中的所有的枚举的对象
        Thread.State[] states = Thread.State.values();
        System.out.println("线程状态枚举类中的对象:");
        for (int i = 0; i < states.length; i++) {
            System.out.println(states[i]);
        }
        System.out.println("****************************");
        //valueOf方法
        SeasonEnum winter = SeasonEnum.valueOf("WINTER");
        System.out.println(winter);
    }
}

在这里插入图片描述

实现接口的枚举类

实现接口,在枚举类中实现抽象方法


interface info {
    void show();
}
enum SeasonEnumImplementsInterface1 implements info {
    //提供当前枚举类的对象,之间使用","隔开,最后一个对象使用";"隔开
    SPRING("春天", "春暖花开"),
    SUMMER("夏天", "夏日炎炎"),
    AUTUMN("秋天", "秋高气爽"),
    WINTER("冬天", "冰天雪地");

    private final String seasonName;
    private final String seasonDesc;
    private SeasonEnumImplementsInterface1(String seasonName, String seasonDesc) {
        this.seasonName = seasonName;
        this.seasonDesc = seasonDesc;
    }
    @Override
    public void show() {
        System.out.println("枚举类实现了接口的抽象方法");
    }
}

在这里插入图片描述

让接口的每个枚举对象都实现各自的方法


//枚举的各个对象实现了接口的抽象方法
enum SeasonEnumImplementsInterface2 implements info {
    //提供当前枚举类的对象,之间使用","隔开,最后一个对象使用";"隔开
    SPRING("春天", "春暖花开") {
        @Override
        public void show() {
            System.out.println("春天来了");
        }
    },
    SUMMER("夏天", "夏日炎炎") {
        @Override
        public void show() {
            System.out.println("夏天到了");
        }
    },
    AUTUMN("秋天", "秋高气爽") {
        @Override
        public void show() {
            System.out.println("秋天来了");
        }
    },
    WINTER("冬天", "冰天雪地") {
        @Override
        public void show() {
            System.out.println("冬天来了");
        }
    };

    private final String seasonName;
    private final String seasonDesc;
    private SeasonEnumImplementsInterface2(String seasonName, String seasonDesc) {
        this.seasonName = seasonName;
        this.seasonDesc = seasonDesc;
    }
}

在这里插入图片描述


public class EnumDemo4 {
    @Test
    public void test1(){
        SeasonEnumImplementsInterface1[] SeasonEnumImplementsInterface1s = SeasonEnumImplementsInterface1.values();
        System.out.println("季节枚举类中的对象:");
        for (SeasonEnumImplementsInterface1 seasonEnumImplementsInterface1:SeasonEnumImplementsInterface1s) {
            System.out.println(seasonEnumImplementsInterface1);
            seasonEnumImplementsInterface1.show();
        }
    }
    @Test
    public void test2(){
        SeasonEnumImplementsInterface2[] SeasonEnumImplementsInterface2s = SeasonEnumImplementsInterface2.values();
        System.out.println("季节枚举类中的对象:");
        for (SeasonEnumImplementsInterface2 seasonEnumImplementsInterface2:SeasonEnumImplementsInterface2s) {
            System.out.println(seasonEnumImplementsInterface2);
            seasonEnumImplementsInterface2.show();
        }
    }
}

注解

注解概述

在Java中,注解(Annotation)引入始于Java5,用来描述Java代码的元信息,通常情况下注解不会直接影响代码的执行,尽管有些注解可以用来做到影响代码执行。
A

nnotation 其实就是代码里的特殊标记, 这些标记可以在编译, 类加载, 运行时被读取, 并执行相应的处理。通过使用 Annotation,程序员可以在不改变原逻辑的情况下, 在源文件中嵌入一些补充信息。

Annotation可以像修饰符一样使用,可以用来修饰包、类、构造器、方法、成员变量、参数、局部变量的声明,这些信息被保存在Annotation的“name = value”对中。

在JavaSE中,注解的使用目的比较简单,例如标记过时的功能,忽略警告等。
一定的程度上可以说框架 = 注解 + 反射机制 + 设计模式

常见的注解

1.生成文档相关的注解

2.在编译的时候进行格式的检查

3.跟踪代码的依赖性,实现代替配置文件的功能


package AnnotationDemo;

public class AnnotationDemo1 {
}
class B implements A{
    //2.在编译的时候进行格式的检查
    @Override
    public void test() {
    }
}
interface A{
    void test();
}

总结

本篇文章的上半部分就到这里了,希望对你有所帮助,也希望您能够多多关注编程网的更多内容!

--结束END--

本文标题: Java的枚举,注解和反射(一)

本文链接: https://www.lsjlt.com/news/129785.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java的枚举,注解和反射(一)
    目录枚举什么是枚举?枚举类的实现自定义实现枚举类使用关键字enum定义枚举类Enum的常用方法实现接口的枚举类注解注解概述常见的注解总结枚举 什么是枚举? 枚举的字面意思就是 一一列...
    99+
    2022-11-12
  • Java的枚举,注解和反射(二)
    目录反射什么是反射?反射的用途反射的具体作用反射的主要APIClass类总结反射 什么是反射? 反射是指在程序运行期间,可以通过Reflection Api提供方法可以获取任何类的内...
    99+
    2022-11-12
  • Java和C++的枚举与反射有什么不同
    这篇文章主要介绍“Java和C++的枚举与反射有什么不同”,在日常操作中,相信很多人在Java和C++的枚举与反射有什么不同问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java和C++的枚举与反射有什么不同...
    99+
    2023-06-17
  • Java中的反射,枚举及lambda表达式的使用详解
    目录一、反射1.1定义1.2用途1.3反射基本信息1.4与反射相关的类1.5Class类(反射机制的起源)1.6Class类中的相关方法1.7获得Class对象的三种方式1.8反射的...
    99+
    2022-11-13
  • 一文搞懂Java中的注解和反射
    目录1、注解(Annotation)1.1 什么是注解(Annotation)1.2 内置注解1.3 元注解(meta-annotation)1.4 自定义注解2、反射(Reflec...
    99+
    2022-11-13
  • Java枚举类与注解,新手一篇搞定它
    目录一、枚举类① 自定义枚举类② enum关键字定义枚举类③ enum 枚举类的方法④ enum 枚举类实现接口二、注解① 生成文档相关注解②注解在编译时进行格式检查③注解跟踪代码的...
    99+
    2022-11-12
  • Java枚举与注解的创建步骤
    目录枚举自定义枚举类创建方法注意事项关键字Enum枚举类创建步骤注意事项Enum成员方法例:创建一个枚举类并打印其中的常量对象注解@override元注解(了解)总结枚举 自定义枚举...
    99+
    2022-11-12
  • 一文了解Java中枚举的使用
    目录概述枚举介绍和使用枚举的本质枚举常见用途枚举创建单例枚举抽象方法概述 Java中枚举,大家在项目中经常使用吧,主要用来定义一些固定值,在一个有限的集合内,比如在表示一周的某一天,...
    99+
    2022-11-13
  • java注解和反射怎么使用
    Java注解和反射是Java编程中非常重要的概念。注解是一种元数据,可以用来为Java程序提供额外的信息,而反射则允许程序在运行时动...
    99+
    2023-05-29
    java注解和反射 java
  • Java中的注解和反射怎么使用
    这篇文章主要讲解了“Java中的注解和反射怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java中的注解和反射怎么使用”吧!1、注解(Annotation)1.1 什么是注解(Ann...
    99+
    2023-07-02
  • 一文带你了解java中的泛型、反射与注解
    一文带你了解java中的泛型、反射与注解?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。泛型擦除泛型擦除: 泛型只在编译时期有效,编译后的字节码文件中不存在泛型信息。声明泛型...
    99+
    2023-05-31
    java 反射 泛型
  • 如何用Java注解和反射实现依赖注入
    目录概述定义注解为被注入的方法添加注解通过反射处理注解概述 在Spring中,我们可以通过 @Autowired注解的方式为一个方法中注入参数,那么这种方法背后到底发生了什么呢,这篇...
    99+
    2022-11-12
  • java中反射和注解的简单使用方法
    目录什么反射?Java反射机制提供的功能反射相关的主要APIClass 类获取Class 类的实例( 四种方法)哪些类型可以有Class 对象?演示Class类的常用方法有了Clas...
    99+
    2022-11-12
  • 一文搞懂Spring中的注解与反射
    目录前言一、内置(常用)注解1.1@Overrode1.2@RequestMapping1.3@RequestBody1.4@GetMapping1.5@PathVariable1....
    99+
    2022-11-13
  • java高级用法之注解和反射讲义
    前言 反射和注解在java中偏高级用法,一般在各种框架中被广泛应用,文章简单介绍下反射和注解的用法,希望对你的工作学习有一定帮助 java注解 什么是注解 Java 注解也就是An...
    99+
    2022-11-12
  • 如何在Java项目中使用注解和反射
    今天就跟大家聊聊有关如何在Java项目中使用注解和反射,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Java可以用来干什么Java主要应用于:1. web开发;2. Android开...
    99+
    2023-06-06
  • Java通过反射注解赋值的方法详解
    目录问题描述最终解决if/else 普通解法通过反射注解赋值属性解题思路汇总某些字段的和总结源码前段时间,领导分配一个统计销售区域汇总的数据,解决方案使用到了反射获取注解,通过注解获...
    99+
    2022-11-13
  • Java使用反射和动态代理实现一个View注解绑定库
    目录支持的功能代码注解类实现类使用使用反射结合动态代理实现一个View注解绑定库,支持View和事件绑定,代码简洁,使用简单,扩展性强。 支持的功能 @ContentView 绑定l...
    99+
    2022-11-13
  • JAVA基础之注解与反射的使用方法和场景
    目录注解注解定义使用场景内置注解 元注解反射加载配置文件反射获取Class反射获取 Constructor反射获取 Method反射获取 Field通过反射获取注解信息内省...
    99+
    2022-11-11
  • 详解Java枚举与接口常量和类常量的区别
    目录一个简单的需求接口常量类常量枚举什么是枚举枚举常量限制输入的类型枚举可以使用==来比较吗枚举实现单例一个简单的需求 在我们实际开发java项目过程中,突然有一天"领导老...
    99+
    2022-11-13
    Java枚举 接口常量 类常量 Java 枚举 Java 接口常量 Java 类常量
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作