当前位置: 首页 > news >正文

第十章:枚举类与注解

10.1:枚举类的使用

        当需要定义一组常量时,建议使用枚举类(前提:类的对象只有有限个,确定的)

                eg:

                        星期:Mondey、.....、Sunday

                        性别:Man、.....、Woman

                        线程状态:创建、就绪、运行、阻塞、死亡

package com.jiayifeng.java;/*** author 爱编程的小贾* create 2023-09-17 18:25** 一:枚举类的使用*      1.理解:类的对象只有有限个,确定的,我们称此类为枚举类*      2.如果枚举类中只有一个对象,则可以作为单列设计模式的实现方法** 二:如何定义枚举类?*      1.方式一:jdk5.0之前,自定义枚举类*      2.方式二:jdk5.0,可以使用enum关键字定义枚举类** 三:Enum类中常用的方法:*      values()方法:返回枚举类的对象数组,该方法可以很方便的遍历所有的枚举值*      valueOf(String str)方法:可以把一个字符串转换为对应的枚举类对象。*      toString():返回当前枚举类对象常量的名称** 四:使用enum关键字定义的枚举类实现接口的情况*      情况一:实现接口,在enum类中实现抽象方法*      情况二:让枚举类的对象分别实现接口中的抽象方法*/
public class SeasonTest {public static void main(String[] args) {Season spring = Season.SPRING;
//        toString()System.out.println(spring);//Season{seasonName='春天', seasonDesc='春暖花开'}}
}//自定义枚举类
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 finalpublic 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;}//    5.其它诉求2:提供toString()@Overridepublic String toString() {return "Season{" +"seasonName='" + seasonName + '\'' +", seasonDesc='" + seasonDesc + '\'' +'}';}
}
package com.jiayifeng.java;/*** author 爱编程的小贾* create 2023-09-18 8:14** 一:使用enum关键字定义枚举类*      1.说明:定义的枚举类默认继承java.lang.Enum类*/
public class SeasonTest2 {public static void main(String[] args) {Season1 spring = Season1.SPRING;
//        toString()System.out.println(spring);//Season1{seasonName='春天', seasonDesc='春暖花开'}System.out.println(Season1.class.getSuperclass());//class java.lang.Enum
//        values()Season1[] values = Season1.values();for(int i = 0;i < values.length;i++) {System.out.println(values[i]);values[i].show();}/*Season1{seasonName='春天', seasonDesc='春暖花开'}春天在哪里?Season1{seasonName='夏天', seasonDesc='夏日炎炎'}夏天在哪里?Season1{seasonName='秋天', seasonDesc='秋高气爽'}秋天在哪里?Season1{seasonName='冬天', seasonDesc='冰天雪地'}冬天在哪里?*/System.out.println("***************************");Thread.State[] values1 = Thread.State.values();for(int i = 0;i < values.length;i++){System.out.println(values1[i]);/*NEWRUNNABLEBLOCKEDWAITING*/System.out.println("************************");
//            valueOf(String objName):返回枚举类中对象名是objName的对象
//            如果没有objName的枚举类对象,则抛异常:IllegalArgumentExceptionSeason1 winter = Season1.valueOf("WINTER");System.out.println(winter);//Season1{seasonName='冬天', seasonDesc='冰天雪地'}
//            winter.show();//这是一个季节}}
}interface Info{void show();
}
//使用enum关键字定义枚举类
enum Season1 implements Info{//   1.提供当前枚举类的对象,多个对象之间用","隔开,末尾对象用";"结束SPRING("春天","春暖花开"){public void show(){System.out.println("春天在哪里?");}},SUMMER("夏天","夏日炎炎"){public void show(){System.out.println("夏天在哪里?");}},AUTUMN("秋天","秋高气爽"){public void show(){System.out.println("秋天在哪里?");}},WINTER("冬天","冰天雪地"){public void show(){System.out.println("冬天在哪里?");}};//   2.声明对象的属性:private final修饰private final String seasonName;private final String seasonDesc;//   3.私有化类的构造器,并给对象属性进行赋值(初始化)private Season1(String seasonName,String seasonDesc){this.seasonName = seasonName;this.seasonDesc = seasonDesc;}//   4.其它诉求1:获取枚举类对象的属性public String getSeasonName() {return seasonName;}public String getSeasonDesc() {return seasonDesc;}//   5.其它诉求2:提供toString()@Overridepublic String toString() {return "Season1{" +"seasonName='" + seasonName + '\'' +", seasonDesc='" + seasonDesc + '\'' +'}';}//    @Override
//    public void show() {
//        System.out.println("这是一个季节");
//    }
}

10.2:注解的使用(Annotation)

        10.2.1:注解概述

                从JDK 5.0开始,Java增加了对元数据(MetaData)的支持,也就是Annotation

                Annotation其实就是代码里的特殊标记,这些标记可以在编译,类加载,运行时被读取,并执行相应的处理。通过使用Annotation,程序员可以在不改变原有逻辑的情况下,在源文件中嵌入一些补充信息。代码分析工具、开发工具和部署工具可以通过这些补充信息进行验证或者进行部署

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

                可以说:框架 = 注解 + 反射 + 设计模式

        10.2.2:注解的用法

                

                

http://www.lryc.cn/news/169884.html

相关文章:

  • ChatGPT:字符串操作问题——提取包含括号的字符串中的题干内容
  • jvm中对象创建、内存布局以及访问定位
  • C基础-操作符详解
  • 时序预测 | MATLAB实现BO-BiGRU贝叶斯优化双向门控循环单元时间序列预测
  • 【深度学习实验】线性模型(五):使用Pytorch实现线性模型:基于鸢尾花数据集,对模型进行评估(使用随机梯度下降优化器)
  • ADB底层原理
  • etcd之读性能主要影响因素
  • 【Stable Diffusion】安装 Comfyui 之 window版
  • Ansys Zemax | 如何建立二向分色分光镜
  • Mybatis学习笔记8 查询返回专题
  • 【测试开发】基础篇 · 专业术语 · 软件测试生命周期 · bug的描述 · bug的级别 · bug的生命周期 · 处理争执
  • ​bing许少辉乡村振兴战略下传统村落文化旅游设计images
  • 第三十一章 Classes - 继承规则
  • 华为云HECS安装docker并安装mysql
  • MQ - 04 基础篇_存储_消息数据和元数据的存储设计
  • JavaScript:隐式转换、显示转换、隐式操作、显示操作
  • 2023全新TwoNav开源网址导航系统源码 | 去授权版
  • Android 12 源码分析 —— 应用层 六(StatusBar的UI创建和初始化)
  • 华为云ROMA Connect亮相Gartner®全球应用创新及商业解决方案峰会,助力企业应用集成和数字化转型
  • 虚拟线上发布会带来颠覆性新体验,3D虚拟场景直播迸发品牌新动能
  • Linux arm64 pte相关宏
  • MVCC:多版本并发控制案例分析(一)
  • 以数据为中心的安全市场快速增长
  • AUTOSAR汽车电子嵌入式编程精讲300篇-经典 AUTOSAR 安全防御能力的分析及改善(下)
  • AI绘图提示词Stable Diffusion Prompt 笔记
  • xml元素值需要保留space
  • Eclipse开源代码下载
  • python多线程、进程
  • Vue基础之模板语法介绍
  • 【SLAM】 前端-视觉里程计之特征点