Java基础-学习笔记11

news/2024/9/18 3:56:05/文章来源:https://www.cnblogs.com/97gogo/p/18358169

11 枚举、注解

枚举

枚举是一组常量的集合。
可以这么理解:枚举属于一种特殊的类,里面只包含一组有限的特定的对象。比如,Season类,只包含SPRING、SUMMER、AUTUMN、WINTER四个对象常量。
两种实现方式

(1)自定义类实现枚举

      1) 构造器私有化
      2) 本类内部创建一组对象 [四个 春夏秋冬]
      3) 对外暴露对象(通过为对象添加 public final static 修饰符)
      4) 可以提供 get方法,但不要提供 set

//main:
System.out.println(Season.AUTUMN.getName());
System.out.println(Season.SPRING.getDesrip());class Season
{private String name;private String desrip;private Season(String name, String desrip){this.name = name;this.desrip = desrip;}public static final Season SPRING = new Season("Spring", "warm");public static final Season SUMMER = new Season("Summer", "hot");public static final Season AUTUMN = new Season("Autumn", "cool");public static final Season WINTER = new Season("Winter", "cold");public String getName(){return name;}public String getDesrip(){return desrip;}
}

(2)enum 关键字实现枚举

  1. 使用 enum 代替 class
  2. 使用 enum 来实现枚举,要求将定义的常量对象写在前面
  3. 如果有多个常量对象,用,(逗号)间隔即可,最后用;(分号)结尾
  4. 直接使用 常量名(构造器实参列表) 就可创建常量对象
  5. 如果使用的是无参构造器创建常量对象,则可以忽略小括号和实参列表
  6. 当我们使用 enum 来实现枚举时,默认会继承 Enum类(可通过 javap 反编译查看)
//main:
System.out.println(Season.AUTUMN.getName());
System.out.println(Season.SPRING.getDesrip());enum Season
{SPRING("Spring", "warm"),SUMMER("Summer", "warm"),AUTUMN("Autumn", "cool"),WINTER("Winter", "cold");private String name;private String desrip;private Season(String name, String desrip){this.name = name;this.desrip = desrip;}public String getName(){return name;}public String getDesrip(){return desrip;}
}

enum 常用方法

枚举类.valueOf(名称): 返回名称对应的枚举对象,如果不存在就会报错
枚举实例.ordinal(): 返回枚举实例对应的索引号,默认从0开始
枚举类.values(): 返回当前枚举类中所有常量形成的列表
枚举实例1.compareTo(枚举实例2): 比较两个枚举常量,比较的是位置号,返回实例1的位置号-实例2的位置号

enum 使用细节

  1. enum 类已经隐式继承了 Enum 类了,所以不能再继承其他类了。
  2. enum 类和普通类一样,可以实现接口

注解

1)注解(annotation)也被称为元数据(metadata),用于修饰解释 包、类、方法、属性、构造器、局部变量等数据信息。
2) 相当于嵌入再代码中的补充信息。
3) 在 JavaSE,注解的使用目的比较简单,例如标记过时内容(@Deprrcated)、限定重写方法(@Override)、抑制编译器警告(@SuppressWarning); 在JaveEE中注解占据了更重要的角色,例如用来配置应用程序的任何切面,代替JavaEE旧版中所遗留的繁冗代码和XML配置等。
4) @Target是修饰注解的注解,是元注解。
5) 写注解的价值在于,编译会自动进行语法校验。比如说,如果写了@Override注解,编译器就会去检查该方法是否真的重写了父类的方法,如果的确构成重写,则编译通过。否则编译错误。

元注解 (了解即可)

 // 元注解的种类:1)Retention  // 指定注解的作用范围(时间),三种:// SOURCE(编译器使用后直接丢弃这种策略的注解)// CLASS (注解记录保留在class文件中,运行Java程序时,JVM不会保留注解)// RUNTIME(注解记录保留在class文件中,运行时JVM会保留注解,程序可以通过反射获取该注解)2)Target  // 指定注解可以在那些地方使用,取值包括 类、方法、构造器...3)Documented  // 指定该注解是否在javadoc中体现4)Inherited  // 子类会自动继承父类的注解

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QTableWidget 设置列宽样式

一、QTableWidget 有时需要设置表格的列宽样式,设置方式如下:// 设置竖直表头不可见ui.tableWidget->verticalHeader()->setVisible(false);// 设置水平表头不可见ui.tableWidget->horizontalHeader()->setVisible(false);// 设置列数ui.tableWidget->setColu…

KingbaseRAC部署案例之---基于SAN存储部署

KingbaseES 、RAC案例说明: 通过iscsi共享存储作为数据库存储文件系统,构建KingbaseES RAC架构。 适用版本: KingbaseES V008R006C008M030B0010 操作系统版本: [root@node201 KingbaseHA]# cat /etc/centos-release CentOS Linux release 7.9.2009 (Core)集群架构: 如下所…

Google只能以管理员运行

关于Google踩了一个坑,折磨了好久。记录一下。这个默认是打开的关闭之后正常快捷方式运行!

(转)《eBPF 核心技术与实战》

原文:https://fanlv.fun/2022/11/05/study-ebpf/ 概览 eBPF 是什么呢? 从它的全称“扩展的伯克利数据包过滤器 (Extended Berkeley Packet Filter)” 来看,它是一种数据包过滤技术,是从 BPF (Berkeley Packet Filter) 技术扩展而来的。 BPF 提供了一种在内核事件和用户程序…

KingbaseES V8R3集群运维案例---sys_md5修改密码错误

KingbaseES、kingbasecluster案例说明: KingbaseES V8R3集群在通过sys_md5修改SYSTEM用户密码时出现异常“invalid password length in cluster_passwd file”。 适用版本:KingbaseES V8R3 一、问题现象 ksql访问集群9999端口,提示“md5 authentication failed”:kingbasec…

音频去噪:使用Python和FFT增强音质

根据定义,声音去噪是从音频信号中去除不需要的噪音或干扰,以提高其质量和清晰度的过程。这涉及识别和隔离噪音成分(通常以不规则或高频元素为特征),并将其过滤掉,同时保持原始声音的完整性。 声音去噪目标是改善聆听体验以及音频分析和处理的准确性。过滤掉噪音对于高保真音频来…

使用 onBeforeRouteLeave 组合式函数提升应用的用户体验

title: 使用 onBeforeRouteLeave 组合式函数提升应用的用户体验 date: 2024/8/14 updated: 2024/8/14 author: cmdragon excerpt: 摘要:本文介绍了在Nuxtjs中使用onBeforeRouteLeave组合式函数来提升应用用户体验的方法。onBeforeRouteLeave允许在组件离开当前路由前执行逻辑…

线程状态

阻塞状态 import lombok.SneakyThrows;import java.text.SimpleDateFormat;public class T {@SneakyThrowspublic static void main(String[] args) {new Thread(() -> {synchronized (T.class) {try {Thread.sleep(6000);System.out.println(new SimpleDateFormat("yy…

502错误分析及处理(Nginx应用服务器出现502错误的原因)

Nginx应用服务器出现502错误的原因很多,但是基本都是资源不够造成的。 包括:内存不足,CPU超标,硬盘满了,另外可能也有程序导致php-fpm停止运行。对应的的解决办法: 内存和CPU超标,通过重启一下php-fpm 和nginx mysql 三个服务可以临时解决,如果是1核1g的配置且经常出现…

【医疗器械质量管理体系GB/T42061-2022法规内容了解】

国标GB/T42061 等同于 国际标准ISO13485(GB/T42061-2022 idt ISO 13485:2016) 4.1 组织要求4.2文件要求5、管理职责6、资源管理7、产品实现8、测量,分析与改进

.NET 8 中利用 MediatR 实现高效消息传递

前言 MediatR 是 .NET 下的一个实现消息传递的库,轻量级、简洁高效,用于实现进程内的消息传递机制。它基于中介者设计模式,支持请求/响应、命令、查询、通知和事件等多种消息传递模式。通过泛型支持,MediatR 可以智能地调度不同类型的消息,非常适合用于领域事件处理。 在本…