Java的枚举与注解

网友投稿 276 2022-10-18


Java的枚举与注解

目录枚举自定义枚举类创建方法注意事项关键字Enum枚举类创建步骤注意事项Enum成员方法例:创建一个枚举类并打印其中的常量对象注解@override元注解(了解)总结

枚举

自定义枚举类

创建方法

将构造器私有化,防止直接new

去掉setXXX方法,防止属性直接被修改

在类的内部,直接创建固定的对象

优化:在创建对象时添加final修饰,类就不会被加载

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NiDq1Wz7-1623685638664)(C:\Users\stati\AppData\Roaming\Typora\typora-user-images\image-20210611125337817.png)]

注意事项

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

枚举对象名通常使用全部大写

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

关键字Enum枚举类

创建步骤

使用关键字enum替代class

public static final Season SPRING = new Season("春天","温暖");直接使用SPRING("春天","温暖"):常量名(实参列表)

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

如果有多个常量(对象),使用,间隔,最后一个用分号;

如果使用enum来实现枚举类,要求将定义的常量对象,必须写在类的行首

注意事项

使用enum关键字后就不能继承其他类了,因为enum会隐式继承Enum类,而java是单继承

枚举类 和普通类一样,可以实现接口

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

**个人理解:**枚举类就是一个类,里面的枚举对象就是创建好的对象放在里面

public class test {

public static void main(String[] args) {

Color color = Color.RED;

switch (color){

case RED:

color.show();

break;

case BLUE:

color.show();

break;

default:

break;

}

}

}

public interface Show {

public void show();

}

public enum Color implements Show{

RED(255,0,0),BLUE(0,0,255),BLACK(0,0,0),YELLOW(255,255,0),GREEN(0,255,0);

private int redValue;

private int greenValue;

private int blueValue;

Color(int redValue,int greenValue,int blueValue){

this.redValue = redValue;

this.greenValue = greenValue;

this.blueValue = blueValue;

}

@Override

public void show(){

System.out.println("red:"+this.redValue+",green:"+this.greenValue+",blue:"+this.blueValue);

}

}

Enum成员方法

toString:返回当前对象名,子类可以重写

name:返回当前对象名(常量名),子类中不能重写

ordinal:返回当前对象的位置号,默认从0开始

values:返回一个数组,包含当前枚举类的所有常量

valueOf:将字符串转换成枚举对象,要求字符串为已有的常量名,否则报异常

comparaTo:比较两个枚举常量,比较的就是位置号

例:创建一个枚举类并打印其中的常量对象

public class EnumExercise {

public static void main(String[] args) {

System.out.println("=====遍历枚举=======");

Week[] weeks = Week.values();

for (Week week :weeks){

System.out.println(week);

}

}

}

enum Week{

Monday("星期一"),Tuesday("星期二"),WednesdBDznPUay("星期三"),Thursday("星期四");

private String name;

private Week(String name) {

this.name = name;

}

@Override

public String toString(){

return name;

}

}

注解

用于修饰解释、包、类、方法、属性、构造器、局部变量等数据信息

注解不影响程序逻辑,但注解可以编译或运行,相当于嵌套在代码中的补充信息

在java SE 中,注解使用目的比较简单,例如标记过时的功能、忽略警告等;在java EE 中,用来配置应用程序的任何切面,代替java EE 旧版本中所遗留的繁冗代码和xml配置等

@override

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

如果写了@override,编译器会检查该方法是否真的重写了父类的方法;相当于提醒编译器校验

如果没写,如果父类有对应方法,一样的构成重写

@Deprecated

用于表示某个程序元素(类、方法)已过时

可以修饰类、方法、包、字段、参数

用作版本升级过度时使用

@SuppressWarnings

抑制编译器警告

不希望看到警告时,可以用这个注解来抑制编 译器

作用范围:和放置的位置有关

元注解(了解)

@Retention:用于修饰一个注解,指定该注解可以保留多长时间

@Target:用于修饰一个注解,指定被修饰的注解能修饰哪些元素;target包含一个value的成员变量

@Documented:用于指定被修饰的注解类将被javadoc工具提取成文档

@Inherited:子类会继承被这个注解修饰的注解

总结


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:工业交换机出现故障问题排查步骤详解
下一篇:视频人脸识别EasyCVR平台添加sqlite数据库,出现锁死是什么原因?
相关文章

 发表评论

暂时没有评论,来抢沙发吧~