当前位置:网站首页>枚举和注解
枚举和注解
2022-07-27 19:07:00 【小唐学抓娃】
== = = = = = = = = 枚举和注解= = = = = = = = = = ==
== = = = = = = = = =枚举= = = = = = = = = = ==
一、枚举的二种实现方式
- 自定义类实现枚举
- 使用 enum 关键字实现枚举
1、自定义枚举类
1.不需要提供setXxx方法,因为枚举对象值通常为只读.
2.对枚举对象/属性使用final + static共同修饰,实现底层优化.
3.枚举对象名通常使用全部大写,常量的命名规范.
4.枚举对象根据需要,也可以有多个属性
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 AUTUMN =new Season(“秋天”, “凉爽”);
public static final Season SUMMER new Season(“夏天”, “炎热”);
private Season(String name, String desc) {
this.name = name;
this.desc = desc;
}
public String getName() {
return name;
}
public String getDesc(){
return desc;
}
@Override
public String toString() {
return “Season{” +
“name=’” + name + ‘’’ +
“, desc=’” + desc + ‘’’ + ‘}’;
}
}
小结:进行自定义类实现枚举,有如下特点:
1)构造器私有化
2)本类内部创建一组对象[四个春夏秋冬]
3)对外暴露对象(通过为对象添加public final static修饰符)
4)可以提供 get方法,但是不要提供 set
2、enum关键字实现枚举
public class Enumeration03 {
public static void main(String[] args) { System.out.println(Season2.AUTUMN);
System.out.println(Season2.SUMMER); } }
//演示使用 enum 关键字来实现枚举类
enum Season2 {//类
//定义了四个对象, 固定.
// public static final Season SPRING = new Season(“春天”, “温暖”);
// public static final Season WINTER = new Season(“冬天”, “寒冷”);
// public static final Season AUTUMN = 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(“冬天”, “寒冷”), AUTUMN(“秋天”, “凉爽”), SUMMER(“夏天”, “炎热”)/, What()/;
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;
}
@Override
public String toString() {
return “Season{” + “name=’”
- name + ‘’’ + “, desc=’”
- desc + ‘’’ + ‘}’;
- }
- }
enum 关键字实现枚举注意事项
- 当我们使用 enum 关键字开发一个枚举类时,默认会继承 Enum 类, 而且是一个 final 类[如何证明],老师使用 javap 工 具来演示
- 传统的 public static final Season2 SPRING = new Season2(“春天”, “温暖”); 简化成 SPRING(“春天”, “温暖”), 这里必 须知道,它调用的是哪个构造器.
- 如果使用无参构造器 创建 枚举对象,则实参列表和小括号都可以省略
- 当有多个枚举对象时,使用,间隔,最后有一个分号结尾
- 枚举对象必须放在枚举类的行首.
== = = = = = = = = =注解= = = = = = = = = = ==
一、注解的理解
- 注解(Annotation)也被称为元数据(Metadata),用于修饰解释 包、类、方法、属性、构造器、局部变量等数据信息。
- 和注释一样,注解不影响程序逻辑,但注解可以被编译或运行,相当于嵌入在代码中的补充信息。
- 在 JavaSE 中,注解的使用目的比较简单,例如标记过时的功能,忽略警告等。在 JavaEE 中注解占据了更重要的角 色,例如用来配置应用程序的任何切面,代替 java EE 旧版中所遗留的繁冗代码和 XML 配置等。
二、基本的 Annotation 介绍
1、使用 Annotation 时要在其前面增加 @ 符号, 并把该 Annotation 当成一个修饰符使用。用于修饰它支持的程序元 素
2、三个基本的 Annotation:
1) @Override: 限定某个方法,是重写父类方法, 该注解只能用于方法
2) @Deprecated: 用于表示某个程序元素(类, 方法等)已过时
3) @SuppressWarnings: 抑制编译器警告
1)、Override使用说明
Ⅰ[email protected]表示指定重写父类的方法(从编译层面验证),如果父类没有fly方法,则会报错
Ⅱ如果不写@Override注解,而父类仍有public void fly00,仍然构成重写Ⅲ[email protected]只能修饰方法,不能修饰其它类,包,属性等等
Ⅳ查看@Override注解源码为@Target(ElementType.METHOD),说明只能修饰方法
Ⅴ.@Target是修饰注解的注解,称为元注解,记住这个概念.
2)@Deprecated 注解的案例
Ⅰ. @Deprecated 修饰某个元素, 表示该元素已经过时
Ⅱ即不在推荐使用,但是仍然可以使用
Ⅲ 查看 @Deprecated 注解类的源码
Ⅳ可以修饰方法,类,字段, 包, 参数 等等
Ⅴ@Deprecated 可以做版本升级过渡使用
3)@SuppressWarnings 注解的案例
- 当我们不希望看到这些警告的时候,可以使用 SuppressWarnings 注解来抑制警告信息
- 在{""} 中,可以写入你希望抑制(不显示)警告信息
- 可以指定的警告类型有
.// 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,抑制与未用的程式码及停用的程式码相关的警告
4. 关于 SuppressWarnings 作用范围是和你放置的位置相关
比如 @SuppressWarnings 放置在 main 方法,那么抑制警告的范围就是 main
// 通常我们可以放置具体的语句, 方法, 类
三、JDK 的元 Annotation(元注解, 了解)
元注解的基本介绍
JDK 的元 Annotation 用于修饰其他 Annotation 元注解: 本身作用不大,看源码时,可以知道他是干什么.
元注解的种类
- Retention 指定注解的作用范围,三种 SOURCE,CLASS,RUNTIME
- Target 指定注解可以在哪些地方使用
- Documented 指定该注解是否会在 javadoc 体现
- Inherited 子类会继承父类注解
边栏推荐
- ACM MM 2022 | 浙大提出:点云分割主动学习新SOTA
- Worthington plasma amine oxidase (PAO) instructions
- Instructions - Worthington reverse transcriptase, recombinant HIV testing program
- ECCV 2022 | 中科大&京东提出:数据高效的Transformer目标检测器
- OPPO造芯计划正式公布:首款芯片或为OPPO M1
- ADB ~ 隐藏或禁用状态栏和虚拟按键
- ADB shell LS /system/bin (index table)
- What are the product performances of industrial Ethernet switches?
- 软件测试面试题:软件验收测试包括正式验收测试、alpha测试、beta测试三种测试?
- 30 minutes to thoroughly understand the synchronized lock upgrade process
猜你喜欢

Plato Farm在Elephant Swap上铸造的ePLATO是什么?为何具备高溢价?

Dual process theory and triple mental model

Why use MQ message oriented middleware? These questions must be solved

一篇文章带你走进pycharm的世界----别再问我pycharm的安装和环境配置了!!!

Comprehensively design an oppe homepage -- Design of selected accessories on the page

微软商店无法下载应用,VS2019无法下载插件问题解决方案

Idea connects to MySQL database and performs SQL query operations

LinkedList underlying source code

How to realize a good knowledge management system?

除了「加机器」,其实你的微服务还能这样优化
随机推荐
软件测试面试题:请说出这些测试最好由那些人员完成,测试的是什么?
首发展锐5G芯片!纯国产5G手机海信F50曝光:搭载虎贲T710+春藤510
中英文说明书丨 AbFluor 488 细胞凋亡检测试剂盒
In crsctl, the function of displayed home
@The difference between Autowired annotation and @resource annotation
一篇文章带你走进pycharm的世界----别再问我pycharm的安装和环境配置了!!!
怎么还有人问 MySQL 是如何归档数据的呢?
Worthington磷脂酶A2研究丨磷脂酰胆碱2-乙酰水解酶
Pytest失败重跑
单核CPU, 1G内存,也能做JVM调优吗?
30分钟彻底弄懂 synchronized 锁升级过程
The new CTO strongly prohibits the use of calendar?
LinkedList underlying source code
软件测试面试题:单元测试、集成测试、系统测试的侧重点是什么?
对L1正则化和L2正则化的理解[通俗易懂]
puzzle(002)内固、外固、哈密顿
中国能否在元宇宙的未来发展中取得突破,占领高地?
哈希表的查找与插入及删除
一文读懂Plato Farm的ePLATO,以及其高溢价缘由
Worthington phospholipase A2 study phosphatidylcholine 2-acetylhydrolase