Java-day13(枚举与注解)
枚举与注解
枚举
1.自定义枚举
如果枚举只有单个成员,则可以作为单例模式的实现方式
public class test{
public static void main(String[] args) { Season spring = Season.spring;System.out.println(spring);spring.show();System.out.println(spring.getSeasonName());
}
}
//枚举类
class Season{//1.提供类的属性的私有,不可修改private final String seasonName;private final String seasonDesc;//声明为final的属性,在构造器中初始化private Season(String seasonName, String seasonDesc){this.seasonDesc = seasonDesc;this.seasonName = seasonName;}//通过公共的方法来调用属性public String getSeasonName(){return seasonName;}public String getSeasonDesc(){return seasonDesc;}//创建枚举类对象:将类的对象声明为public static finalpublic static final Season spring = new Season("spring", "万物复苏");public static final Season summer = new Season("summer", "烈日炎炎");public static final Season autumn = new Season("autumn", "秋高气爽");public static final Season winter = new Season("winter", "寒冬来临");public String toString(){return "Season [ Name: " + seasonName + ", Desc: " + seasonDesc + "]";}public void show(){System.out.println("又是这个季节");}
}
2.使用enum关键字定义枚举类
enum关键字是JDK1.5新增的
枚举类的主要方法
public class test1{
public static void main(String[] args) { Season1 spring = Season1.spring;System.out.println(spring); spring.show();System.out.println(spring.getSeasonName()); System.out.println(); //1.枚举的values()方法Season1[] seasons = Season1.values();for(int i = 0;i < seasons.length;i++){System.out.println(seasons[i]); } System.out.println(); //2.枚举的valueof(String name)方法:要求传入的形参name必须是枚举对象的名字,否则报异常IllegalArgumentExceptionString str = "spring";Season1 sea = Season1.valueOf(str);System.out.println(sea);
}
}
//枚举类
enum Season1{spring ("spring", "万物复苏"),summer ("summer", "烈日炎炎"),autumn ("autumn", "秋高气爽"),winter ("winter", "寒冬来临");private final String seasonName; private final String seasonDesc;private Season1(String seasonName, String seasonDesc){this.seasonDesc = seasonDesc;this.seasonName = seasonName;}public String getSeasonName(){return seasonName;}public String getSeasonDesc(){return seasonDesc;}public String toString(){ return "Season [ Name: " + seasonName + ", Desc: " + seasonDesc + "]"; }public void show(){System.out.println("又是这个季节");}
}
3.实现接口的枚举类
- 可以让枚举类的对象调用同一套被重写的抽象方法,执行的效果相同
例:
public class test1{
public static void main(String[] args) { Season1 spring = Season1.spring;System.out.println(spring);spring.show();System.out.println(spring.getSeasonName());System.out.println();
}
}
enum Season1{spring ("spring", "万物复苏"),summer ("summer", "烈日炎炎"),autumn ("autumn", "秋高气爽"),winter ("winter", "寒冬来临");private final String seasonName;private final String seasonDesc;private Season1(String seasonName, String seasonDesc){this.seasonDesc = seasonDesc;this.seasonName = seasonName;}public String getSeasonName(){return seasonName;}public String getSeasonDesc(){return seasonDesc;}public String toString(){return "Season [ Name: " + seasonName + ", Desc: " + seasonDesc + "]";}public void show(){System.out.println("又是这个季节");}
}
- 可以让不同的枚举类的对象调用被重写的抽象方法,执行的效果不同(相当于让每个对象重写自己的抽象方法)
例:
public class test2{
public static void main(String[] args) { Season1 spring = Season1.spring;System.out.println(spring);spring.show();System.out.println(spring.getSeasonName());System.out.println();
}interface info{void show();
}
enum Season1 implements info{spring ("spring", "万物复苏"){public void show(){System.out.println("春天到了!"); }},summer ("summer", "烈日炎炎"){public void show(){System.out.println("夏天到了!");}},autumn ("autumn", "秋高气爽"){public void show(){System.out.println("\u79CB天到了!");}},winter ("winter", "寒冬来临"){public void show(){System.out.println("冬天到了!");}};private final String seasonName;private final String seasonDesc;private Season1(String seasonName, String seasonDesc){this.seasonDesc = seasonDesc;this.seasonName = seasonName;}public String getSeasonName(){return seasonName;}public String getSeasonDesc(){return seasonDesc;}public String toString(){return "Season1 [ Name: " + seasonName + ", Desc: " + seasonDesc + "]";}
}
}
注释(Annotation)
-
从JDK5.0开始增加对元数据的支持,即注解(代码中的特殊标记)
-
可用于修饰包,类,构造器,方法,成员变量,参数,局部变量的声明,保存在注解的"name=value"对中
-
能被用来为程序元素(类,方法等)设置元数据
4.内置的基本注释类型(3个)
@Override
限定重写父类方法,只能用于方法
例:
public class test{public static void main(String[] args) { Person p = new Student();p.info();}
}
class Student extends Person{@Overridepublic void info(){System.out.println("学生表演吃瓜!");}
}
class Person{//个人信息private String name; //姓名private int age; //年龄private String sex; //性别public Person(String name,int age,String sex){super();this.name = name;this.age = age;this.sex = sex;}public Person(){super();}public void info(){System.out.println("人\u8868\u6F14吃瓜!");}
}
@Deprecated
用于表示某个程序元素(类,方法等)已过时
例:
public class test6 {public static void main(String[] args) { Person p = new Student();p.info();}
}
class Student extends Person{public void info(){System.out.println("学生表演吃瓜!");}
}
@Deprecated
class Person{//个人信息private String name; //姓名private int age; //年龄private String sex; //性别public Person(String name,int age,String sex){super();this.name = name;this.age = age;this.sex = sex;}public Person(){super();}public void info(){System.out.println("人\u8868\u6F14吃瓜!");}
}
@SuppressWarnings
抑制编译器警告
import java.util.ArrayList;
import java.util.List;
public class test {public static void main(String[] args) { @SuppressWarnings({"rawtypes","unused"})//抑制没有使用泛型,没有使用的警告List list = new ArrayList();}
}
5.自定义注解
例:
public @interface test7 {String value() default "hello";
}
//使用
public class test6 {@test7(value = "qwerq")public static void main(String[] args) { }
}
6.元注解(4个)
修饰其他注解的定义,该注解具体有
@Retention
只能修饰一个注解的定义,指定该注解可以保留多长时间,@Retention中有一个RetentionPolicy
类型的成员变量,使用时,必须给这个成员变量指定值(值:
- SOURCE(编译器直接放弃这种注解)
- CLASS(编译器将注释记录到class文件中,运行时,JVM不保留注解,这是默认值)
- RUNTIME(编译器将注释记录到class文件中,运行时,JVM保留注解,程序可以通过反射获取该注解))
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;@Retention(RetentionPolicy.CLASS)
public @interface test7 {String value() default "hello";
}
@Target
指定被修饰的注解能用于哪些程序元素,@Target中有一个value
的成员变量
@Documented
将被javadoc工具提取成文件,@Retention
值必须是RUNTIME
@Inherited
被它修饰的注解将具有继承性,某个类使用了此注解,那它的子类将自动具有该注释
感谢大家的支持,关注,评论,点赞!
参考资料:
尚硅谷宋红康20天搞定Java基础中部
相关文章:
Java-day13(枚举与注解)
枚举与注解 枚举 1.自定义枚举 如果枚举只有单个成员,则可以作为单例模式的实现方式 public class test{ public static void main(String[] args) { Season spring Season.spring;System.out.println(spring);spring.show();System.out.println(…...
vue PDF或Word转换为HTML并保留原有样式
方法一 要将PDF或Word转换为HTML并保留原有样式,可以使用pdfjs-dist和mammoth.js这两个库。首先需要安装这两个库: npm install pdfjs-dist mammoth.js然后在Vue项目中使用这两个库进行转换: import * as pdfjsLib from pdfjs-dist; impor…...

华硕笔记本摄像头倒置怎么办?华硕笔记本摄像头上下颠倒怎么调整
笔记本电脑相较于台式电脑,更易携带,解决了很大一部分人的使用需求。但是笔记本电脑也存在很多不足,比如华硕笔记本电脑就经常会出现摄像头倒置的错误,出现这种问题要如何修复呢?下面就来看看详细的调整方法。 华硕笔记…...

本地套接字通信
1.本地套接字 本地套接字的作用:本地的进程间通信 有关系的进程间的通信 没有关系的进程间的通信 本地套接字实现流程和网络套接字类似,一般采用TCP的通信流程 2.本地套接字通信的流程 - tcp // 服务器端 1.创建监听的套接字int lfd socket(AF_U…...

数据结构(Java实现)-优先级队列(堆)
队列是一种先进先出(FIFO)的数据结构,但有些情况下,操作的数据可能带有优先级,一般出队 列在这种情况下,数据结构应该提供两个最基本的操作,一个是返回最高优先级对象,一个是添加新的对象。 这种数据结构就…...

算法通关村第8关【黄金】| 寻找祖先问题
思路:递归三部曲 第一步:确定参数和返回值 题目要求找到指定的结点,就需要返回结点。 题目又涉及到p,q就需要传入p,q,需要遍历传入root 第二步:确定终止条件 当遍历到结点为空说明到底没找到返回空 或者遍历到p,…...

栈和队列(详解)
一、栈 1.1、栈的基本概念 1.1.1、栈的定义 栈(Stack):是只允许在一端进行插入或删除的线性表。首先栈是一种线性表,但限定这种线性表只能在某一端进行插入和删除操作。 栈顶(Top):线性表允许…...

iOS开发Swift-3-UI与按钮Button-摇骰子App
1.创建新项目Dice 2.图标 删去AppIcon,将解压后的AppIcon.appiconset文件拖入Assets包。 3.将素材点数1-6通过网页制作成2x,3x版本并拖入Asset。 4.设置对应的UI。 5.拖入Button组件并设置style。 6.Ctrl加拖拽将Button拖拽到ViewController里࿰…...

1、[春秋云镜]CVE-2022-32991
文章目录 一、相关信息二、解题思路(手注)三、通关思路(sqlmap) 一、相关信息 靶场提示:该CMS的welcome.php中存在SQL注入攻击。 NVD关于漏洞的描述: 注入点不仅在eid处!!ÿ…...

pdf如何删除其中一页?了解一下这几种删除方法
pdf如何删除其中一页?随着电子文档的广泛应用,PDF已成为最常见的文档格式之一。然而,有时候你可能会发现,你的PDF文档中包含了一些多余的页面,或者你需要删除其中的某一页。那么,该如何删除PDF中的页面呢&a…...

PO设计模式是selenium自动化测试中最佳的设计模式之一
Page Object Model:PO设计模式是selenium自动化测试中最佳的设计模式之一,主要体现在对界面交互细节的封装,也就是在实际测试中只关注业务流程就OK了传统的设计中,在新增测试用例之后,代码会有以下几个问题:…...

yolov8使用C++推理的流程及注意事项
1.下载yolov8项目源码GitHub - ultralytics/ultralytics: NEW - YOLOv8 🚀 in PyTorch > ONNX > OpenVINO > CoreML > TFLite 2.下载opencvReleases - OpenCV,建议版本>4.7.0,选择下载源码, windows版本由于使用的编译器与我们所使用的m…...
深度思考计算机网络面经之二
HTTP2和1.1的区别 HTTP 2.0 和 HTTP 1.1 相比有哪些优势呢? HTTP1.1的队头阻塞问题 服务器必须按照请求接收的顺序来响应,为什么 是因为传统的1.1中没有特定字段来区分一个请求属于哪个,只能按照请求的物理顺序返回, HTTP2解…...

老年人跌倒智能识别算法 opencv
老年人跌倒智能识别算法通过opencvpython深度学习算法框架模型,老年人跌倒智能识别算法能够及时发现老年人跌倒情况,提供快速的援助和救援措施,保障老年人的安全。Python是一种由Guido van Rossum开发的通用编程语言,它很快就变得…...

ros2官方文档(基于humble版本)学习笔记
ros2官方文档(基于humble版本)学习笔记(一) 一、安装ROS2二、按教程学习1.CLI 工具配置环境 由于市面上专门讲ROS2开发的书籍不多,近期看完了《ROS机器人开发实践》其中大部分内容还是基于ROS1写的,涉及top…...

可拖动表格
支持行拖动,列拖动 插件:sortablejs UI: elementUI <template><div><hr style"margin: 30px 0;"><div><!-- 数据里面要有主键id, 否则拖拽异常 --><h2 style"margin-bottom: 30px&qu…...

C++语法基础
这里写目录标题 基础语法第一个程序变量常量的定义关键字标识符命名 (变量命名)sizeof的使用实型(浮点型)字符型转义字符字符串的定义 一级目录二级目录二级目录二级目录 一级目录二级目录二级目录二级目录 基础语法 第一个程序 …...
Windi CSS和Tailwind CSS以及UnoCSS
最近合作在写一个vue3ts的项目,看到其他人用了一种写法,我觉得很奇怪,之前没见过,他是这样写的 <div class"news flex-1 h-40px flex"></div>我不理解的是为什么这样写就会让这个div的高度就是40px,好多代码…...

c++ opencv将彩色图像按连通域区分
要将彩色图像按连通域区分,您可以使用 OpenCV 中的 cv::connectedComponents 函数。 下面是一个简单的示例代码,说明如何使用 cv::connectedComponents 函数来检测并标记图像中的连通域: #include <opencv2/opencv.hpp> #include <…...
〖程序员的自我修养 - 认知剖析篇⑩〗- 学习编程的高效率方法
人之所以会觉得迷茫,本质上是欠缺对自己的一个控制力、识别庞杂信息、去伪存真的独立思考与认知能力。 说明:该文属于 程序员的自我修养 专栏,购买任意白宝书体系化专栏可加入易编程社区,早鸟价订阅模式除外。福利:加入社区的小伙伴们,除了可以获取博主所有付费专栏的阅读…...

Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...

ESP32读取DHT11温湿度数据
芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...
【Java学习笔记】BigInteger 和 BigDecimal 类
BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点:传参类型必须是类对象 一、BigInteger 1. 作用:适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...
SQL慢可能是触发了ring buffer
简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...

使用LangGraph和LangSmith构建多智能体人工智能系统
现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...