JAVA SE -- 第十天

(全部来自“韩顺平教育”)

一、枚举(enumeration,简写enum)

枚举是一组常量的集合

1、实现方式

        a.自定义类实现枚举

        b.使用enum关键字实现枚举

二、自定义类实现枚举

1、注意事项

①不需要提供setXxx方法,因为枚举对象通常为只读

②对枚举对象/属性使用 final + static 共同修饰,实现底层优化

③枚举对象名通常使用全部大写,常量的命名规范

④枚举对象根据需要,也可以有多个属性

2、 举例

//自定义枚举类
class Season{
    private String name;
    private String desc;//描述

    //定义了四个对象,固定
    public static final Season SPRING = new Season("春天","温暖");
    public static final Season WINTER = new Season("冬天","寒冷");
    public static final Season AUTUNM = new Season("秋天","凉爽");
    public static final Season SUMMER = new Season("夏天","炎热");

    //1.将构造器私有化,目的:防止直接new
    //2.去掉setXxx方法,防止属性被修改
    //3.在Season内部,直接创建固定的对象
    //4.优化,可以加入final修饰符
    private Season(String name, String desc){
        this.name = name;
        this.desc = desc;
    }

    public String getName(){
        return name;
    }

    public String getDesc(){
        return desc;
    }

}

 3、小结

进行自定义类实现枚举,有如下特点:

①构造器私有化

②本类内部创建一组对象

③对外暴露对象(通过为对象添加public final static修饰符)

④可以提供get方法,但是不要提供set

三、enum关键字是实现枚举

1、举例

//enum关键字实现枚举类
enum Season2{
    private String name;
    private String desc;//描述

    //public static final Season SPRING = new Season("春天","温暖");
    //public static final Season WINTER = new Season("冬天","寒冷");
    //public static final Season AUTUNM = new Season("秋天","凉爽");
    //public static final Season SUMMER = new Season("夏天","炎热");
    //如果使用了enum来实现枚举类
    //1.使用关键字enum替代class
    //2.public static final Season SPRING = new Season("春天","温暖")直接使用SPRING("春            
    //  天","温暖")   解读  常量名(实参列表)
    //3.如果有多个常量(对象),使用,号间隔即可
    //4.如果使用enum来实现枚举,要求将定义常量对象,写在前面
    //5.如果使用的是无参构造器,创建常量对象,则可以省略()
    SPRING("春天","温暖"),WINTER("冬天","寒冷"),AUTUNM("秋天","凉爽"),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;
    }

}

2、注意事项

①使用 enum关键字开发一个枚举类时,默认会继承Enum类,而且是一个final类

②传统的public static final Season SPRING = new Season("春天","温暖");简化成SPRING("春天","温暖"),这里必须知道,它调用的是哪个构造器

③如果使用无参构造器创建枚举对象,则实参列表和小括号都可以省略

④当有多个枚举对象时,使用,间隔,最后有一个分号结尾

⑤枚举对象必须放在枚举类的行首

3、enum常用方法说明

说明:使用关键字enum时,会隐式继承Enum类,所以可以使用类相关的方法。【源码定义如下】

public abstract class Enum<E extends Enum<E>>
    implements Comparable<E>,Serializable{
}

 1) toString:Enum 类已经重写过了,返回的是当前对象名,子类可以重写该方法,用于返回对象的属性信息
2) name:返回当前对象名(常量名),子类中不能重写
3) ordinal:返回当前对象的位置号,默认从 0 开始
4) values:返回当前枚举类中所有的常量
5) valueOf:将字符串转换成枚举对象,要求字符串必须为已有的常量名,否则报异常!
6) compareTo:比较两个枚举常量,比较的就是编号!

 4、enum实现接口

①使用enum关键字后,就不能再继承其他类了,因为enum会饮食继承Enum,而Java是单继承机制

②枚举类和普通类一样,可以实现接口,形式如下:

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

四、注解

1、注解的理解

①注解(Annotation)也被称为元数据(Metadata),用于修饰解释 包、类、方法、属性、构造器、局部变量等数据信息

②和注释一样,注解不影响程序逻辑,但注解可以被编译或运行,相当于嵌入在代码中的补充信息

③在JavaSE中,注解的使用目的比较简单,例如标记过时的功能,忽略警告等。在JavaSE中注解占据了更重要的角色,例如用来配置应用程序的任何切面,代替Java EE旧版中所遗留的繁冗代码和XML配置等。

 2、基本的Annotation介绍

使用Annotation时要在其前面增加@符号,并把该Annotation当成一个修饰符使用。用于修饰它支持的程序元素

三个基本的Annotation:

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

②@Deprecated:用于表示某个程序元素(类,方法等)已过时

③@SuppressWarnings:抑制编译器警告

3、基本的Annotation应用案例

①@Override注解

 使用说明:

a.@Override表示指定重写父类的方法,,如果父类没有fly方法,则会报错

b.如果不写@Override注解,而父类仍有public void fly(){},仍然构成重写

c.@Override只能修饰方法,不能修饰其它类,包,属性等等

d.查看@Override注解源码为@Target(ElementType.METHOD),说明只能修饰方法

e.@Target是修饰注解的注解,称为元注解

 ②@Deprecated注解

说明:

a.用于表示某个程序元素(类,方法等)已过时

b.可以修饰方法,类,字段,包,参数 等等

c.@Target(value={CONSTRUCTOR,FIELD,LOCAL_VARIABLE,METHOD,PACKAGE,PARAMETER,TYPE})

d.@Deprecated的作用可以做到新旧版本的兼容和过渡

 ③@SuppressWarnings

@SuppressWarnings({"xxx","xxx"....})

可以指定的警告类型:

all,抑制所有警告
boxing,抑制与封装/拆装作业相关的警告
cast,抑制与强制转型作业相关的警告
dep-ann,抑制与淘汰注释相关的警告
deprecation,抑制与淘汰的相关警告
fallthrough,抑制与 switch 陈述式中遗漏 break 相关的警告
finally,抑制与未传回 finally 区块相关的警告
hiding,抑制与隐藏变数的区域变数相关的警告
incomplete-switch,抑制与 switch 陈述式(enum case)中遗漏项目相关的警告
javadoc,抑制与 javadoc 相关的警告
nls,抑制与非 nls 字串文字相关的警告
null,抑制与空值分析相关的警告
rawtypes,抑制与使用 raw 类型相关的警告
resource,抑制与使用 Closeable 类型的资源相关的警告
restriction,抑制与使用不建议或禁止参照相关的警告
serial,抑制与可序列化的类别遗漏 serialVersionUID 栏位相关的警告
static-access,抑制与静态存取不正确相关的警告
static-method,抑制与可能宣告为 static 的方法相关的警告
super,抑制与置换方法相关但不含 super 呼叫的警告
synthetic-access,抑制与内部类别的存取未最佳化相关的警告
sync-override,抑制因为置换同步方法而遗漏同步化的警告
unchecked,抑制与未检查的作业相关的警告
unqualified-field-access,抑制与栏位存取不合格相关的警告
unused,抑制与未用的程式码及停用的程式码相关的警告

 

五、JDK的元Annotation(了解即可)

 1、基本介绍

JDK的元Annotation用于修饰其他Annotation

2、种类

①Retention    //指定注解的作用范围,三种SOURCE,CLASS,RUNTIME

②Target    //指定注解可以在哪些地方使用

③Documented     //指定该注解是否会在javadoc体现

④Inherited     //子类会继承父类注解

3、@Retention注解

说明:

只能用于修饰一个Annotation定义,用于指定该Annotation可以保留多长时间,@Retention

包含一个 RetentionPolicy类型的成员变量, 使用 @Rentention 时必须为该 value 成员变量指定值:
@Retention 的三种值
a.RetentionPolicy.SOURCE: 编译器使用后,直接丢弃这种策略的注释
b.RetentionPolicy.CLASS: 编译器将把注解记录在 class 文件中. 当运行 Java 程序时, JVM 不会保留注解。 这是默认值

c.RetentionPolicy.RUNTIME:编译器将把注解记录在 class 文件中. 当运行 Java 程序时, JVM 会保留注解. 程序可以通过反射获取该注解

4、@Target注解 

 5、@Documented注解

 6、@Inherited注解

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/43002.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

开源QianWei搭建音乐网站,并实现公网连接

开源QianWei搭建音乐网站&#xff0c;并实现公网连接 1、前言2、本地网页搭建2.1环境使用2.2 支持组建选择2.3 网页安装 3、本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4、公网访问测试5、结语 1、前言 音乐是我们生活和工作中不可或缺的调剂&#xff0c;它能让我们心…

155、基于STM32单片机老人防跌倒摔倒GSM短信报警系统ADXL345加速度设计(程序+原理图+PCB源文件+参考论文+硬件设计资料+元器件清单等)

毕设帮助、开题指导、技术解答(有偿)见文未 目录 一、硬件方案 二、设计功能 三、实物图 四、原理图 五、PCB图 六、程序源码 资料包括&#xff1a; 需要完整的资料可以点击下面的名片加下我&#xff0c;找我要资源压缩包的百度网盘下载地址及提取码。 单片机主芯片选…

【PostgreSQL内核学习(六)—— 工具使用学习】

工具使用学习 工具使用学习安装中出现的问题 声明&#xff1a;本文的工具学习内容来自于《小宇带你学pg内核分析》 工具的代码仓库链接为&#xff1a; https://github.com/shenyuflying/pgNodeGraph 此外&#xff0c;我还参考了以下文章&#xff1a; https://rng-songbaobao.bl…

Mac配置Latex环境教程2023

第一步&#xff1a;安装MacTex 官网&#xff1a;https://www.tug.org/mactex/ 第二步&#xff1a;安装编译器&#xff1a;Texpad xclient官网下载Texpad&#xff1a;https://xclient.info/s/texpad.html 第三步&#xff1a;开始使用 LeTex \documentclass{article}\begin{do…

rabbitmq模块启动报java.net.SocketException: socket closed的解决方法

问题 最近在接手一个项目时&#xff0c;使用的是spring-cloud微服务构架&#xff0c;mq消息消费模块是单独一个模块&#xff0c;但启动这个模块一直报如下错误&#xff1a; java.net.SocketException: socket closed 这个错误是这个模块注册不到nacos报的错&#xff0c;刚开…

在Debian 12 上安装 PHP 5.6, 7.4

环境&#xff1a;Debian 12 Debian 12 默认的PHP版本为 8.2 如果直接安装php7.4就出现下面的报错&#xff1a; sudo apt-get install libapache2-mod-php7.4 php7.4 php7.4-gd php7.4-opcache php7.4-mbstring php7.4-xml php7.4-json php7.4-zip php7.4-curl php7.4-imap p…

Spring使用注解存储Bean对象

文章目录 一. 配置扫描路径二. 使用注解储存Bean对象1. 使用五大类注解储存Bean2. 为什么要有五大类注解&#xff1f;3.4有关获取Bean参数的命名规则 三. 使用方法注解储存Bean对象1. 方法注解储存对象的用法2. Bean的重命名 在前一篇博客中&#xff08; Spring项目创建与Bean…

RS485/RS232自由转ETHERNET/IP网关rs485和232接口一样吗

你是否曾经遇到过这样的问题&#xff1a;如何将ETHERNET/IP网络和RS485/RS232总线连接起来呢&#xff1f; 远创智控的YC-EIP-RS485/232通讯网关&#xff0c;自主研发的ETHERNET/IP从站功能&#xff0c;完美解决了这个难题。这款网关不仅可以将ETHERNET/IP网络和RS485/RS232总线…

访客报警定位管理系统:提升安全管理水平的创新解决方案

在当前日益复杂的安全环境下&#xff0c;保障人员安全、提高安全响应能力和管理效率成为了各行各业的首要任务。 作为一种先进的安全管理解决方案&#xff0c;访客报警定位管理系统凭借其独特的优势和广泛的应用场景&#xff0c;正逐渐成为各行业安全管理的重要工具。 那么&a…

「深度学习之优化算法」(十七)灰狼算法

1. 灰狼算法简介 (以下描述,均不是学术用语,仅供大家快乐的阅读)   灰狼算法(Grey Wolf Algorithm)是受灰狼群体捕猎行为启发而提出的算法。算法提出于2013年,仍是一个较新的算法。目前为止(2020)与之相关的论文也比较多,但多为算法的应用,应该仍有研究和改进的余…

数学建模-时间序列分析 实例

实例1销量数据预测和实例2人口数据预测实例3上证指数预测和实例4gdp增长率预测 数据-定义时间 不加置信区间清晰点 例二 实例3

性能测试-Jmeter之Linux下压力测试

我们在做测试的时候&#xff0c;有时候要运行很久&#xff0c;公司用的测试服务器一般都是linux&#xff0c;就可以运行在linux下面&#xff0c;linux下面不能像windows一样有图形化界面&#xff0c;那怎么运行脚本呢&#xff0c;就先在windows上把脚本做好&#xff0c;然后在l…

云计算和云架构是什么 有什么用途?

云计算是一种基于互联网的计算方式&#xff0c;它通过网络将计算资源(如计算能力、存储、网络带宽等)以服务的形式提供给用户&#xff0c;并允许用户根据需求进行灵活的资源调配和管理。云计算通常分为三个层次&#xff0c;即基础设施即服务(IaaS)、平台即服务(PaaS)和软件即服…

Spring学习记录----十二、Spring IoC注解式开发

目录 十二、Spring IoC注解式开发 12.1 回顾注解 注解怎么定义&#xff0c;注解中的属性怎么定义&#xff1f; 注解怎么使用&#xff1f; 1--通过反射机制怎么读取注解&#xff1f; 代码 运行结果 2--通过反射机制怎么读取注解&#xff1f; 代码 运行结果 12.2 声明…

时序数据库 TDengine 与金山云两大产品完成兼容互认证

万物互联时代&#xff0c;企业数字化转型和政企上云如火如荼。在云计算迎来重大发展机遇的同时&#xff0c;数据库在企业数字化转型中也扮演着重要的角色——随着业务量的激增&#xff0c;数据库的弹性扩容、容灾备份等需求逐渐显现&#xff0c;在此挑战下&#xff0c;时序数据…

哈希:探索快速的数据存储和搜索方法

哈希&#xff1a;探索快速的数据存储和搜索方法 哈希表作为一种高效的数据存储结构&#xff0c;可以使数据的存储位置与关键码之间建立一一映射的关系&#xff0c;从而加快元素的搜索速度。然而&#xff0c;哈希方法也面临着哈希冲突的问题&#xff0c;即不同的关键字通过相同…

MyBatis操作数据库

1.MyBatis是什么&#xff1f; MyBatis 是⼀款优秀的持久层框架&#xff0c;它⽀持⾃定义 SQL、存储过程以及⾼级映射。MyBatis 去除了⼏乎所有的 JDBC 代码以及设置参数和获取结果集的⼯作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接⼝和 Java POJO&#xf…

力扣 -- 918. 环形子数组的最大和

一、题目&#xff1a; 题目链接&#xff1a;918. 环形子数组的最大和 - 力扣&#xff08;LeetCode&#xff09; 二、解题步骤&#xff1a; 下面是用动态规划的思想解决这道题的过程&#xff0c;相信各位小伙伴都能看懂并且掌握这道经典的动规题目滴。 三、参考代码&#xff1…

Sevlet规范:HttpServlet类 和 HttpServletRequest接口 源码解析

1. HTTP协议解读 什么是协议&#xff1f; 协议实际上是某些人&#xff0c;或者某些组织提前制定好的一套规范&#xff0c;大家都按照这个规范来&#xff0c;这样可以做到沟通无障碍。协议就是一套规范&#xff0c;就是一套标准。由其他人或其他组织来负责制定的。我说的话你能…

辅助驾驶功能开发-功能规范篇(23)-2-Mobileye NOP功能规范

5.2 状态机要求 5.2.1 NOP/HWP 状态机 NOP/HWP状态机如下所示&#xff1a; 下表总结了这些状态&#xff1a; 状态描述Passive不满足功能条件&#xff0c;功能无法控制车辆执行器。Standby满足功能条件。该功能不是由驾驶员激活的。功能不控制车辆执行器。Active - Main功能由…