java 枚举类
当需要定义一组常量时,可以使用枚举类
一、定义枚举类:
方式一:自定义枚举类(jdk5.0之前)
-
persion对象的属性:使用final关键字修饰
-
创建类的构造器,并给对象的属性赋值
-
创建枚举类的多个对象
public class demo1 { public static void main(String[] args) { System.out.println(persion.A.toString()); System.out.println(persion.B.toString()); System.out.println(persion.C.toString()); System.out.println(persion.D.toString()); } } class persion{ //1.persion对象的属性:使用final关键字修饰 private final String name; private final int age; private final char sex; //2.创建类的构造器,并给对象的属性赋值 private persion(String name, int age, char sex){ this.name = name; this.age = age; this.sex = sex; } //3.创建枚举类的多个对象 public static final persion A = new persion("zhangsan",15,'男'); public static final persion B = new persion("lisi",56,'女'); public static final persion C = new persion("wangwu",27,'女'); public static final persion D = new persion("laoliu",35,'男'); public String getName() { return name; } public int getAge() { return age; } public char getSex() { return sex; } @Override public String toString() { return "persion{" + "name='" + name + '\'' + ", age=" + age + ", sex=" + sex + '}'; } }
方式二:使用enum关键字定义枚举类
-
提供枚举类的对象,对象之间使用",“分割,使用”;"结束
-
对象的属性
-
创建对象的构造器
public class demo2 { public static void main(String[] args) { System.out.println(persion2.A.getAge()); System.out.println(persion2.B.getName()); System.out.println(persion2.C.getSex()); System.out.println(persion2.D); } } enum persion2{ //1.提供枚举类的对象,对象之间使用","分割,使用";"结束 A("zhangsan",15,'男'), B("lisi",56,'女'), C("wnagwu",27,'女'), D("laoliu",35,'男'); //2.对象的属性 private final String name; private final int age; private final char sex; //3.创建对象的构造器 private persion2(String name, int age, char sex){ this.name = name; this.age = age; this.sex = sex; } public String getName() { return name; } public int getAge() { return age; } public char getSex() { return sex; } }
注意:使用enum关键字后,对象继承于Enum类,toString方法已被重写,会打印对象名
二、Enum类常用API
返回值 | 方法名 | 描述 |
---|---|---|
String | toString() | 返回声明中包含的此枚举常量的名称。 |
Object | valueOf(String name) | 返回与传入参数相同名称的枚举对象 |
Object[] | values() | 返回该枚举类中的所有对象 |
java 注解
一、常见注解
-
@Override
表示方法声明旨在覆盖超类型中的方法声明。如果使用此注释类型注释方法,则除非至少满足以下条件之一,否则需要编译器生成错误消息:
- 该方法将覆盖或实现在超类型中声明的方法。
- 该方法具有与Object中声明的任何公共方法的[覆盖相同的签名
-
@Deprecated
注释@Deprecated的程序元素是程序员不鼓励使用的程序元素,通常是因为它是危险的,或者因为存在更好的替代方法。 编译器在不被弃用的代码中使用或覆盖不推荐使用的程序元素时发出警告。
-
@SuppressWarnings
表示在注释元素(以及注释元素中包含的所有程序元素)中应该抑制命名的编译器警告。请注意,给定元素中抑制的一组警告是所有包含元素中抑制的警告的超集。例如,如果您注释一个类来抑制一个警告并注释方法来抑制另一个警告,则两个警告将在该方法中被抑制。
作为一种风格,程序员应该始终将这个注释用于最有效的嵌套元素。 如果要在特定方法中抑制警告,则应该注释该方法而不是其类。
二、自定义注解
- 注解声明为:@interface
- 内部定义成员,通常使用value表示
- 可以指定成员的默认值,使用default定义
- 如果自定义注解没有成员,表名是一个标记(标识作用)
三、JDK中的元注解
元注解用于修饰其他注解
-
Retention:指示要注释具有注释类型的注解的保留时间
SOURCE
注释将被编译器丢弃。CLASS
注释将由编译器记录在类文件中,但VM不需要在运行时保留。 (默认)RUNTIME
注释将由编译器记录在类文件中,并由VM在运行时保留,因此可以反射读取。
-
Target:指明被该注解修饰的注解能够修饰哪些元素
Enum Constant Description ANNOTATION_TYPE
注解类型声明 CONSTRUCTOR
构造函数声明 FIELD
字段声明(包括枚举常数) LOCAL_VARIABLE
局部变量声明 METHOD
方法声明 PACKAGE
包装声明 PARAMETER
正式参数声明 TYPE
类,接口(包括注释类型)或枚举声明 TYPE_PARAMETER
键入参数声明 -
Documented:
-
Inherited:被该注解修饰的注解具有继承性
注解的开发:待。。。