枚举和注解

一.枚举

1.什么是枚举类?

        ——使用enum关键字修饰的类叫做枚举类

2.格式

enum 枚举明 {//首行必须是枚举对象//属性//构造器//方法}

3.自定类实现枚举

  • 将构造器私有化
  • 只提供公共的getter方法,不提供setter方法
  • 枚举对象和属性使用public + static进行修饰【类不会加载】
  • 枚举也是常量,常量名需要大写
public class Test {public static void main(String[] args) {System.out.println(Season.SPRING);System.out.println(Season.SUMMER);System.out.println(Season.AUTUMN);System.out.println(Season.WINTER);}
}class Season {public final static Season SPRING = new Season("春天", "万物复苏");public final static Season SUMMER = new Season("夏天", "天气炎炎");public final static Season AUTUMN = new Season("秋天", "心中凉爽");public final static Season WINTER = new Season("冬天", "万物沉睡");//属性private String name;private String describe;//构造器私有化private Season(String name, String describe) {this.name = name;this.describe = describe;}//getter方法public String getName() {return name;}public String getDescribe() {return describe;}//toString方法public String toString() {return name + " " + describe;}
}

4.一个小case快速了解枚举【enum】类

public class Test {public static void main(String[] args) {System.out.println(Season.SPRING);System.out.println(Season.SUMMER);System.out.println(Season.AUTUMN);System.out.println(Season.WINTER);}
}enum Season {//枚举对象SPRING("春天", "万物复苏"), SUMMER("夏天", "天气炎炎"),AUTUMN("秋天", "心中凉爽"), WINTER("冬天", "万物沉睡");//属性private String name;private String describe;//构造器私有化private Season(String name, String describe) {this.name = name;this.describe = describe;}//getter方法public String getName() {return name;}public String getDescribe() {return describe;}//提供toString方法public String toString() {return name + " " + describe;}
}

5.枚举的细节讨论及实现

  • 当要使用enum来开发一个枚举类时,这个类自动的继承了Enum类,且这个类是final的

  • 当使用枚举对象的时候,要清楚调用的是哪个构造器【无参构造器只需要写枚举对象名】
  • 当有多个枚举对象的时候,使用逗号间隔,最好需要有一个分号结尾
  • 枚举对象必须放在枚举类的行首
public class Test {public static void main(String[] args) {}
}enum Season {//无参构造器只需要写对象名//枚举对象必须放在枚举类的行首SPRING("春天", "万物复苏"), SUMMER, AUTUMN;//属性private String name;private String describe;//构造器私有化private Season() {}private Season(String name, String describe) {this.name = name;this.describe = describe;}
}

6.Enum常用方法

  • toString方法:子类进行重写,返回当前对象属性的信息
public class Test {public static void main(String[] args) {System.out.println(Season.SPRING);}
}enum Season {SPRING("春天", "万物复苏");//属性private String name;private String describe;//构造器private Season(String name, String describe) {this.name = name;this.describe = describe;}//重写toString方法public String toString() {return name + " " + describe;}
}
  • name方法:返回当前对象名(常量名),子类不能重写
public class Test {public static void main(String[] args) {System.out.println(Season.SPRING.name());//SPRING}
}enum Season {SPRING("春天", "万物复苏");//属性private String name;private String describe;//构造器private Season(String name, String describe) {this.name = name;this.describe = describe;}
}
  • ordinal:返回当前对象的位置号,默认从0开始
public class Test {public static void main(String[] args) {System.out.println(Season.SPRING.ordinal());//0System.out.println(Season.SUMMER.ordinal());//1System.out.println(Season.AUTUMN.ordinal());//2System.out.println(Season.WINTER.ordinal());//3}
}enum Season {SPRING("春天", "万物复苏"), SUMMER("夏天", "天气炎炎"),AUTUMN("秋天", "心中凉爽"), WINTER("冬天", "万物沉睡");//属性private String name;private String describe;//构造器private Season(String name, String describe) {this.name = name;this.describe = describe;}
}
  • values:返回当前枚举类中所有的常量
public class Test {public static void main(String[] args) {Season[] seasons = Season.values();for (int i = 0; i < seasons.length; i++) {System.out.println(seasons[i]);}}
}enum Season {SPRING("春天", "万物复苏"), SUMMER("夏天", "天气炎炎"),AUTUMN("秋天", "心中凉爽"), WINTER("冬天", "万物沉睡");//属性private String name;private String describe;//构造器private Season(String name, String describe) {this.name = name;this.describe = describe;}
}
  • valueOf:将字符串转换成枚举对象,要求字符串必须为已有的常量名,否则报错
public class Test {public static void main(String[] args) {System.out.println(Season.OTHER);}
}enum Season {SPRING("春天", "万物复苏"), SUMMER("夏天", "天气炎炎"),AUTUMN("秋天", "心中凉爽"), WINTER("冬天", "万物沉睡");//属性private String name;private String describe;//将字符串转换成枚举对象public final static Season OTHER = Season.valueOf("SPRING");//构造器private Season(String name, String describe) {this.name = name;this.describe = describe;}
}
  • compareTo:比较两个枚举常量,比较的是编号【返回的是两者之差】
public class Test {public static void main(String[] args) {System.out.println(Season.SPRING.compareTo(Season.SUMMER));//-1System.out.println(Season.SPRING.compareTo(Season.AUTUMN));//-2System.out.println(Season.SPRING.compareTo(Season.WINTER));//-3System.out.println(Season.WINTER.compareTo(Season.SPRING));//3}
}enum Season {SPRING("春天", "万物复苏"), SUMMER("夏天", "天气炎炎"),AUTUMN("秋天", "心中凉爽"), WINTER("冬天", "万物沉睡");//属性private String name;private String describe;//构造器private Season(String name, String describe) {this.name = name;this.describe = describe;}
}

二.注解

1.注解的理解

  • 注解(元数据),用于修饰解释包、类、构造器、方法、属性、局部变量等数据信息
  • 注释不能被编译或运行,注解可以被编译或运行,相当于嵌入在到吗中的补充信息

2.基本的注解介绍

使用注解的时候需要在其前面加@符号,并把对应的注解当做一个修饰符使用【即修饰支持注解的程序元素】

  • @Override:该注解只能重写父类的方法【限定方法】
  • @Deprecated:表示某个程序元素(类/方法)已经过时
  • @SuppressWarnings:抑制编译器的警告

3.一个小case快速了解注解

public class Test {public static void main(String[] args) {Kid kid = new Kid();kid.say();System.out.println(kid.name);}
}@SuppressWarnings({"all"})//把所有的警告镇压【该类不会报警告】
class Parent {@Deprecated//表示这个name已经过时了public String name = "jack";public void say() {System.out.println("父亲说:我为我的儿子感到骄傲~");}
}@SuppressWarnings({"all"})
class Kid extends Parent {private int age = 10;@Override//该注解只能用于重写父类方法public void say() {System.out.println("孩子说:我要努力学习~");}
}

4.注解的细节讨论及实现

  • @Override的细节

1> @Override表示重写父类的方法【编译方面验证】,如果使用@Override后但是没有重写父类方法,则编译器报错

2> 如果不写@Override,但是子类中还是有重写的方法,也构成重写

3> @Override只能修饰方法,不能修饰其他的

public class Test {public static void main(String[] args) {Kid kid = new Kid();kid.say();kid.hi();}
}class Parent {public String name = "jack";public void say() {System.out.println("父亲说:我为我的儿子感到骄傲~");}public void hi() {System.out.println("hi~");}
}class Kid extends Parent {@Override//该注解只能用于重写父类方法public void say() {System.out.println("孩子说:我要努力学习~");}//没有使用@Override也构成了重写//@Override只能修饰方法public void hi() {System.out.println("孩子说:hi");}//如果使用了@Override但没有重写,则保错//@Override //使用则报错public void hello() {}
}
  • @Deprecated的细节

1> 某个类、方法、属性、构造器被@Deprecated修饰后,表示已过时

public class Test {public static void main(String[] args) {//使用过时的值时中间会加中划线Kid kid = new Kid();}
}class Parent {@Deprecated //修饰属性,属性已过时public String name = "jack";public void say() {System.out.println("父亲说:我为我的儿子感到骄傲~");}@Deprecated //修饰方法,方法已过时public void hi() {System.out.println("hi~");}
}@Deprecated//修饰类,即类已过时
class Kid {
}
  • @SuppressWarnings的细节

1> unchecked:忽略没有检查的值

2> rawtypes:忽略没有指定泛型的警告【传参时没有指定泛型的警告错误】

3> unused:忽略没有使用某个变量的警告

import java.util.ArrayList;
import java.util.List;public class Test {@SuppressWarnings({"unused", "rawtypes"})public static void main(String[] args) {List lists = new ArrayList();}
}//@SuppressWarnings("all"): 表示把该类所有的警告全部屏蔽
@SuppressWarnings("unused")
class Parent {public String name = "jack";public void say() {System.out.println("父亲说:我为我的儿子感到骄傲~");}public void hi() {System.out.println("hi~");}
}

6.元注解

  • 什么是元注解?

元注解是用于修饰其他注解的

  • 元注解的类型

1> Retention:指定注解的作用范围【SOURCE,CLASS,RUNTIME】

2> Target:指定注解可以在那些地方使用

3> Documented:指定该注解是否会在javadoc中体现

4> Inherited:子类会继承父类的注解

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

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

相关文章

【开源】基于Vue和SpringBoot的超市自助付款系统

项目编号&#xff1a; S 008 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S008&#xff0c;文末获取源码。} 项目编号&#xff1a;S008&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容2.1 商品类型模块2.2 商品模块2.3 超市账…

牛客算法心得——kotori和素因子(dfs)

大家好&#xff0c;我是晴天学长&#xff0c;传智杯的题&#xff0c;一个经典的全排列找最小的问题&#xff0c;需要的小伙伴可以关注支持一下哦&#xff01;后续会继续更新的。&#x1f4aa;&#x1f4aa;&#x1f4aa; 1) .kotori和素因子 链接&#xff1a;https://ac.nowcod…

Vue3+ElementPlus,image动态更新src

我想通过点击图片动态更新src&#xff0c;代码如下&#xff1a; <el-image style"width: 100px; height: 30px" :src"ImageUrl" click"refresh" :fit"fit" /> const ImageUrl reactive(http://localhost:9001/getImage)const…

揭秘各种编程语言在不同领域中的精彩表现

文章目录 &#x1f50a;博主介绍&#x1f964;本文内容&#x1f4e2;文章总结&#x1f4e5;博主目标 &#x1f50a;博主介绍 &#x1f31f;我是廖志伟&#xff0c;一名Java开发工程师、Java领域优质创作者、CSDN博客专家、51CTO专家博主、阿里云专家博主、清华大学出版社签约作…

【工具使用-Keil】如何在编译之前使用脚本生成文件

一&#xff0c;简介 本文介绍如何在使用keil编译之前生成文件 二&#xff0c;操作步骤 2.1 生成.bat脚本 将下列代码复制到txt中&#xff0c;将VER_PATH中的变量中的"xxx"替换为自己工程中的路径&#xff0c;并将文件后缀名修改为.bat echo offREM #ifndef __VE…

AWS EC2 如何 使用 SSM会话管理器登陆

首先只有特定版本的OS会默认附带SSM Agent。 预安装了 SSM Agent 的 Amazon Machine Images&#xff08;AMIs&#xff09; - AWS Systems Manager 其次EC的instance role必须有一个叫“AmazonSSMManagedInstanceCore”的策略 如何给IAM User赋权&#xff0c;让他们可以使用SSM…

SwiftUI ——扫码

权限配置 在Info.plist文件中配置相机权限 Privacy - Camera Usage Description 创建一个类&#xff0c;实现了AVCaptureMetadataOutputObjectsDelegate 协议&#xff0c;用于处理扫描到的元数据对象&#xff1b;并做权限处理 // // ScannerViewModel.swift // // Created b…

Kaggle-水果图像分类银奖项目 pytorch Densenet GoogleNet ResNet101 VGG19

一些原理文章 卷积神经网络基础&#xff08;卷积&#xff0c;池化&#xff0c;激活&#xff0c;全连接&#xff09; - 知乎 PyTorch 入门与实践&#xff08;六&#xff09;卷积神经网络进阶&#xff08;DenseNet&#xff09;_pytorch conv1x1_Skr.B的博客-CSDN博客GoogLeNet网…

程序员养生之道:延寿不忘初心——延寿必备

文章目录 每日一句正能量前言如何养生饮食篇运动篇休息篇后记 每日一句正能量 现代社会已不是大鱼吃小鱼的年代&#xff0c;而是快鱼吃慢鱼的年代。 前言 在IT行业中&#xff0c;程序员是一个重要的职业群体。由于长时间的繁重编程工作&#xff0c;程序员们常常忽略了身体健康…

Maya 2024(3D建模、动画和渲染软件)

Maya 2024是一款非常强大的3D建模、动画和渲染软件&#xff0c;它提供了许多新功能和改进&#xff0c;以帮助建模师、动画师和渲染师更加高效地进行创作。 在建模方面&#xff0c;Maya 2024引入了Symmetry&#xff08;对称&#xff09;功能&#xff0c;可以在网格两侧生成均匀…

浅析什么是组态图和组态图设计

随着计算机技术和工业自动化水平迅速提高&#xff0c;而车间现场种类繁杂的控制设备和过程监控装置使得传统的工业控制软件无法满足用户的各种需求。在“组态”概念出现之前&#xff0c;工程技术人员需要通过编写程序来实现某一任务&#xff0c;不但工作量大、周期长&#xff0…