JAVA30天-高级篇-3-枚举类与注解

【Spring Boot 3】【JPA】枚举类型持久化 使用注解,存储枚举类型实例的定义顺序(从0开始递增),这也是JPA处理枚举类型的默认行为;使用注解,存储枚举类型实例的name属性,即name()方法返回值;自定义实现接口的转换类:方法将枚举转换成存储到数据库中的数据;方法将从数据库中查询到的数据转换成枚举。如果在自定义转换器上添加注解,则这个转换器会自动应用到所有的Entity上。 阅读详情

枚举类

自定义枚举

public class SeasonTest {
    public static void main(String[] args) {
        Season spring = Season.SPRING;
        System.out.println(spring); // Season{seasonName='春天', seasonDesc='春暖花开'}
        System.out.println(spring.toString()); // Season{seasonName='春天', seasonDesc='春暖花开'}
        System.out.println(spring.getSeasonName()); // 春天

    }
}

class Season{

    //1.声明Season对象的属性: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的
    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("冬天","冰天雪地");


    //4.其他诉求1:获取枚举类对象的属性
    public String getSeasonName() {
        return seasonName;
    }

    public String getSeasonDesc() {
        return seasonDesc;
    }
    //4.其他诉求1:提供toString()
    @Override
    public String toString() {
        return "Season{" +
                "seasonName='" + seasonName + '\'' +
                ", seasonDesc='" + seasonDesc + '\'' +
                '}';
    }



}

enum枚举

* toString():返回枚举类对象的名称
* values():返回所有的枚举类对象构成的数组
* valueOf(String objName):返回枚举类中对象名是objName的对象。
public class SeasonTest1 {
    public static void main(String[] args) {
        Season1 spring = Season1.SPRING;
        //toString():返回枚举类对象的名称
        System.out.println(spring.toString()); // SPRING
        System.out.println(spring.getSeasonName()); // 春天

        System.out.println("****************");
        //values():返回所有的枚举类对象构成的数组
        Season1[] values = Season1.values();
        for (Season1 value : values) {
            System.out.println(value);
            System.out.println(value.getSeasonName());
        }

        System.out.println("****************");
        //valueOf(String objName):返回枚举类中对象名是objName的对象。
        Season1 winter = Season1.valueOf("WINTER");
        System.out.println(winter.getSeasonName());
    }
}

enum Season1 {
    //1.提供当前枚举类的对象,多个对象之间用","隔开,末尾对象";"结束
    SPRING("春天","春暖花开"),
    SUMMER("夏天","夏日炎炎"),
    AUTUMN("秋天","秋高气爽"),
    WINTER("冬天","冰天雪地");

    //2.声明Season对象的属性:private final修饰
    private final String seasonName;
    private final String seasonDesc;

    //2.私有化类的构造器,并给对象属性赋值

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

    //4.其他诉求1:获取枚举类对象的属性
    public String getSeasonName() {
        return seasonName;
    }

    public String getSeasonDesc() {
        return seasonDesc;
    }
}

继承接口

interface Info{
    void show();
}

//使用enum关键字枚举类
enum Season1 implements Info{
    //1.提供当前枚举类的对象,多个对象之间用","隔开,末尾对象";"结束
    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("大约在冬季");
        }
    };
    
//    @Override
//    public void show() {
//        System.out.println("这是一个季节");
//    }

注解

理解Annotation

* ① jdk 5.0 新增的功能
 *
 * ② Annotation 其实就是代码里的特殊标记, 这些标记可以在编译, 类加载, 运行时被读取, 并执行相应的处理。通过使用 Annotation,
 * 程序员可以在不改变原有逻辑的情况下, 在源文件中嵌入一些补充信息。
 *
 * ③在JavaSE中,注解的使用目的比较简单,例如标记过时的功能,忽略警告等。在JavaEE/Android
 * 中注解占据了更重要的角色,例如用来配置应用程序的任何切面,代替JavaEE旧版中所遗留的繁冗
 * 代码和XML配置等。

Annocation的使用示例

在编译时进行格式检查(JDK内置的三个基本注解)
   @Override: 限定重写父类方法, 该注解只能用于方法
   @Deprecated: 用于表示所修饰的元素(类, 方法等)已过时。通常是因为所修饰的结构危险或存在更好的选择
   @SuppressWarnings: 抑制编译器警告

如何自定义注解:参照@SuppressWarnings定义

* ① 注解声明为:@interface
* ② 内部定义成员,通常使用value表示
* ③ 可以指定成员的默认值,使用default定义
* ④ 如果自定义注解没有成员,表明是一个标识作用。

如果注解有成员,在使用注解时,需要指明成员的值。
自定义注解必须配上注解的信息处理流程(使用反射)才有意义。
自定义注解通过都会指明两个元注解:Retention、Target
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE,TYPE_PARAMETER,TYPE_USE})
public @interface MyAnnotation {

    String value() default "hello";
}

jdk 提供的4种元注解

元注解:对现有的注解进行解释说明的注解
  Retention:指定所修饰的 Annotation 的生命周期:SOURCE\CLASS(默认行为)\RUNTIME
         只有声明为RUNTIME生命周期的注解,才能通过反射获取。
  Target:用于指定被修饰的 Annotation 能用于修饰哪些程序元素
  *******出现的频率较低*******
  Documented:表示所修饰的注解在被javadoc解析时,保留下来。
  Inherited:被它修饰的 Annotation 将具有继承性。

jdk8新特性-注解

可重复注解

① 在MyAnnotation上声明@Repeatable,成员值为MyAnnotations.class
② MyAnnotation的Target和Retention等元注解与MyAnnotations相同。
@Inherited
@Repeatable(MyAnnotations.class)
@Retention(RetentionPolicy.RUNTIME)
@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE,TYPE_PARAMETER,TYPE_USE})
public @interface MyAnnotation {

    String value() default "hello";
}

@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})
public @interface MyAnnotations {

    MyAnnotation[] value();
}

//jdk 8之前的写法:
//@MyAnnotations({@MyAnnotation(value="hi"),@MyAnnotation(value="hi")})
@MyAnnotation(value="hi")
@MyAnnotation(value="abc")

类型注解

关于@Target新增的类型:
ElementType.TYPE_PARAMETER 表示该注解能写在类型变量的声明语句中(如:泛型声明)。
ElementType.TYPE_USE 表示该注解能写在使用类型的任何语句中。
class Generic<@MyAnnotation T>{

    public void show() throws @MyAnnotation RuntimeException{

        ArrayList<@MyAnnotation String> list = new ArrayList<>();

        int num = (@MyAnnotation int) 10L;
    }

}
comsol 多物理场仿真流程-以开关柜为例 1、主要方法 在SolidWorks中对于开关柜的内部与外部结构进行建模,生成能够导入软件计算的3D模型。将SolidWorks中的模型导入comsol软件中,设置参数进行多物理场耦合仿真。 1、具体步骤 删除高压开关柜中对其内部电磁环境无较大影响的结构,如低压测量柜、断路器内部结构等。 导入模型:将厂家提供的3D模型转化为solidworks结构模型。 修复模型:修复已转化模型中转化错误的部分、修复已转化模型中非实体部分、修复已转化模型中重叠实体部分 化简模型:去除过于... 阅读详情

相关推荐

Ansys Zemax | 利用OpticStudio实现衍射光学元件(DOE)与超透镜(metalens)的高效建模与验证

本文详细介绍了如何利用Ansys Zemax的OpticStudio软件实现衍射光学元件(DOE)与超透镜(metalens)的高效建模与验证。通过混合建模策略、相位面等效建模法、POP与FDTD联合验证等多种方法,帮助工程师快速解决跨尺度仿真难题,提升设计效率与精度。文章还分享了实战案例与高级技巧,适用于AR、医疗内窥镜等应用场景。

weixin_29268331的博客 499

Python 集合的基本操作及集合生成式案例

一,集合的说明 集合(set)是Python中的内置数据结构,可看做是 没有Value的字典 元素是无序的, 不能重复,集合里的元素是可变的 注意 集合不支持按索引提取数据,因为输出是乱序的; 二,集合的创建:{} 和set()函数创建集合,注意:打印输出元素顺序与原始顺序不一样 示例1:用 {} 创建集合 d = {'张三','李四','王五','赵六'} print(d) >>>>> {'赵六', '张三', '李四', ...

木子木木的专栏 1028

相位相关匹配法的opencv C++实现

这一段就是PCIAM算法的核心了,计算两幅图像的峰值相关矩阵,也是完全按照matlab移植过来的,但是后面几行,是为了筛选一些不可能存在的情况,比如边缘处的完全重合,或者只有一行,或者一列重合等等情况,由于PCIAM算法在边缘处的响应值高,所以在一些场景下可能是一种干扰,所以进行了剔除,当然可以不剔除,就是对后期的峰值选取会有影响。头文件,以及各类函数,还有主函数,第一次独立的写这种分文件类型的项目,写的拉跨还请包涵,以及当然可以转成类的形式,但感觉有点小麻烦,后期再修改吧。

qq_43616651的博客 4260

Python字典,季节对应的月份判断,输入和输出

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

m0_56438939的博客 8424

西门子S7-1200与汇川SV660F伺服Profinet通讯调试实战

在工业自动化领域,Profinet作为工业以太网标准协议,凭借其高实时性和灵活组网能力,已成为伺服驱动器与PLC通讯的主流选择。其核心原理是通过设备名识别、IP分配以及标准报文(如111速度报文、105定位报文)传输控制字与状态字,实现驱动器的精准控制。相比传统脉冲或CANOpen方案,Profinet直连省去了协议转换网关,降低了成本与故障点,尤其适用于绕线设备、包装机械等中小型单轴或多轴运动控制系统。本文以西门子S7-1200 PLC搭配汇川SV660F伺服为例,完整梳理了从GSDMD组态、InoDri

weixin_29184371的博客 222

STM32H745xI双核芯片SMPS/LDO配置误区:从复位失败到精准排查的实战复盘

本文详细分析了STM32H745xI双核芯片在SMPS/LDO配置中的常见误区,特别是复位失败问题的排查过程。通过对比参考板与故障板的波形数据,揭示了电感选型不当导致的电源稳定性问题,并提供了硬件设计检查清单和调试技巧,帮助开发者避免类似陷阱。

weixin_42531588的博客 264

c语言编程季节输出春夏秋冬,c语言编程题: 用枚类型定义春、夏、秋、冬四个季节...

满意答案bcabcdefg2013.07.28采纳率:49%等级:12已帮助:5373人#includeenum season{spring = 1,summer,autumn,winter,};season GetSeasonByMonth(char month){if(month <= 3 && month>=1)return spring;else if(...

weixin_42395776的博客 1770

从晶体管到触发器:为什么芯片设计必须区分同步/异步复位?

本文深入探讨了芯片设计中同步复位与异步复位的物理本质与工程权衡。从晶体管级的CMOS结构出发,剖析了两种复位方式在物理实现、时序可靠性(如建立/保持时间、恢复/移除时间)上的根本差异,并分析了在不同应用场景下的选择策略。文章强调,理解复位信号的底层机制对于确保芯片时序收敛、系统上电确定性及整体鲁棒性至关重要。

time3的博客 221

java写输出春夏秋冬,switch语句之“春夏秋冬”案例

switch语句之春夏秋冬案例1.功能描述:键盘录入月份,输出对应的季节2.要求:(1)定义一个月份,值通过键盘录入;(2)输出该月份对应的季节3,4,5春季6,7,8夏季9,10,11秋季12,1,2冬季(3)演示格式如下:定义的月份:5控制台输出:5月份是春季import java.util.Scanner;public class SeasonDemo{public static void ...

weixin_32955207的博客 1903

从命名玄学看单片机江湖:STC、STM32与ESP32的型号密码与设计哲学

本文解析了STC、STM32和ESP32三大主流单片机系列的型号命名规则,揭示了其背后的设计哲学与市场策略。通过详细解读STC89C52、STM32F103C8T6等具体型号,帮助开发者理解芯片核心特性、性能等级及适用场景,为嵌入式系统选型提供实用指南。

g5h6i的博客 761

支持向量机算法之鸢尾花特征分类【机器学习】

支持向量机(SVM)是一种二元分类模型。它的基本模型是在特征空间中定义最大区间的线性分类器,这使它不同于感知器;支持向量机还包括核技术,这使得它本质上是一个非线性分类器。支持向量机的学习策略是区间最大化,它可以形式化为求解凸二次规划的问题,等价于正则化铰链损失函数的最小化。支持向量机的学习算法是求解凸二次规划的优化算法。Scikit learn(sklearn)是机器学习中常见的第三方模块。它封装了常见的机器学习方法,包括回归、降维、分类、聚类等。实例的特征向量(以2D为例)映射到空间中的一些点,如下图中的

一键难忘的博客 4970

Java通俗易懂30天 第22天: 枚举类与注解

Java学习路线:day1 Java语言概述 原文:https://shimo.im/docs/9VpyTVDkHD3j3P8D/ 《第1章Java语言概述》 第1章Java语言概述 1.1 软件开发介绍 • 软件开发软件,即一系列按照特定顺序组织的计算机数据和指令的集合。有系统软件和应用软件之分。 • 人机交互方式 • 图形化界面(Graphical User Interface GUI)这种方式简单直观,使用者易于接受,容易上手操作。 • 命令行方式(Command Line Interface CLI

程序员小刘 783

Python 爬虫实战:从零搭建第一个爬虫程序(附完整代码)

本文介绍了Python网络爬虫的入门实战,以豆瓣Top250电影榜单为例,详细讲解爬虫开发全流程。内容包括爬虫基础原理、环境搭建、请求发送与响应处理、数据解析与保存等核心环节,并提供了可直接运行的完整代码示例。文章还分析了常见问题解决方案,并强调了爬虫开发的合规注意事项。通过本教程,读者可快速掌握Python爬虫的基本思路和实操技巧,为后续深入学习BeautifulSoup、XPath等进阶技术打下基础。

2503_91057718的博客 2316

Java学习路线:day22 枚举类与注解

文章目录第10章枚举类与注解枚举类的使用枚举类的理解自定义枚举类使用enum关键字定义枚举类Enum类中的常用方法使用enum关键字定义的枚举类实现接口注解的使用注解的理解Annotation的使用示例如何自定义注解jdk中4个基本的元注解的使用1jdk中4个基本的元注解的使用2利用反射获取注解信息jdk8新特性:可重复注解jdk8新特性:类型注解 第10章枚举类与注解 枚举类的使用 枚举类的理解 类的对象只有有限个,确定的。举例如下: 星期:Monday(星期一)、…、Sunday(星期天) 性别:

杨丙寅 1630

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

【Java 14】枚举类、注解

枚举类、注解一 枚举类1 枚举类的使用2 枚举类的定义2.1 自定义枚举类(JDK5.0之前)2.2 使用enum定义枚举类(JDK5.0)3 Enum类的主要方法4 实现接口的枚举类二 注解(Annotation)1 注解(Annotation)概述2 常见的Annotation示例2.1 示例一:生成文档相关的注解2.2 示例二:在编译时进行格式检查(JDK内置的三个基本注解)2.3 示例三:跟踪代码依赖性,实现替代配置文件功能3 自定义Annotation4 JDK中的元注解4.1 @Retentio

Wmiao 277

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

30天学会Java-20:注解与枚举

本文介绍了Java中的注解(Annotation)和枚举(Enum)两大特性。注解是一种元数据机制,通过@interface定义,可应用于类、方法等程序元素,分为标准注解(如@Override)和自定义注解。元注解(如@Target、@Retention)用于控制注解的行为范围。枚举提供类型安全的常量集合,可包含字段、方法和构造器,常用于状态机、配置选项等场景。两者都能增强代码可读性和可维护性,注解主要用于框架和工具支持,而枚举则用于限定值的场景。

smileKH的博客 774

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Java SE 30天入门

Java SE 30天入门 这篇博客是为了将之前的篇目整合,便于查阅。也是为了纪念花费45天将715p共计150小时的视频看完的后的笔记成果。 名称 地址 2020最新版Java学习路线视频(含资源,实时更新) https://blog.youkuaiyun.com/m0_46153949/article/details/105239624 Java学习路线:day1 Java语言概述 https://blog.youkuaiyun.com/m0_46153949/article/details/10540

杨丙寅 6680

JavaSE基础——第九章 枚举类&注解

本文主要介绍了Java枚举类和注解核心要点

cherryc_的博客 964

30天搞定Java--day22

30天搞定Java的第22天,内容主要包括枚举类和注解

想骑单车环游世界 646

白骑士的Java教学高级篇 5.3 枚举类型

欢迎继续学习Java高级篇!在前面的章节中,我们已经探讨了Java中的反射机制和注解。接下来,我们将讨论Java中的另一项重要特性——枚举类型。枚举类型(Enum)是Java 5引入的一种数据类型,用于表示一组固定的常量。枚举类型可以增强代码的可读性和可维护性,同时避免了使用字符串或整数表示常量时可能出现的错误。通过学习枚举类型,你将能够编写更加简洁和清晰的代码。

JeremyTC的博客 510

韩顺平零基础30天学会Java【章9 枚举类和注解】

韩顺平零基础30天学会Java【章9 枚举类和注解】

麟麟菜菜子的博客 326

【JavaSE 知识框架】08 枚举类和注解

【枚举类和注解】{枚举类的使用}{注解的使用}

woailuo8214的博客 418

Java基础_Junit_枚举,枚举类_注解,自定义注解,元注解_19

Junit Junit Junit属于白盒测试。 软件的白盒测试是对软件的过程性细节做细致的检查。这种方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序的所有逻辑路径进行测试,通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。因此白盒测试又称为结构测试。 ...

qq_44173324的博客 335

Java基础——枚举与注解

枚举类类的对象只有有限个,确定的。当需要定义一组常量时,强烈建议使用枚举类。如果枚举类中只有一个对象,则可以作为单例模式的实现。使用enum定义的枚举类默认继承了java.lang.Enum类,因此不能再继承其他类。从JDK5.0开始,Java增加了对元数据(MetaData)的支持,也就是Annotation(注解)。Annotation其实就是代码里的特殊标记,这些标记可以在编译,类加载,运行时被读取,并执行相应的处理。代码示例5}69}10。...

lt_xiaodou的博客 1150

学习笔记 韩顺平 零基础30天学会Java(2024.7.25)

1.构造器私有化,使外面没有办法创建新对象2.去掉set方法,防止属性被修改3.在Season内部直接创建固定对象4.优化,加上final,不会导致类加载,因为在使用对象静态成员的时候,会导致类加载,但是加上final,由于底层做了优化,因此不会导致类加载。

Xjhhhhh的博客 942

枚举、注解与反射,入门最全最强

1. 枚举 1.1 简介 JDK1.5引入了新的类型——枚举。 在JDK1.5 之前,我们定义常量都是: public static fianl… 。很难管理。 枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。 用于定义有限数量的一组同类常量, 例如: 错误级别: 低、中、高、急 一年的四季: 春、夏、秋、冬 商品的类型: 美妆、手机、电脑、男装、女装… 在枚举类型中定义的常量是该枚举类型的实例。 1.2 格式定义 权限修饰符 enum 枚举名称 { 实例1,实例2,实例3,实例

qq_35217284的博客 343
上一篇: JAVA30天-高级篇-2-常用类
下一篇: JAVA30天-高级篇-4-集合
zgcadmin
博客等级 码龄9年 174粉丝 109原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值