java 枚举类

当需要定义一组常量时,可以使用枚举类

一、定义枚举类:

方式一:自定义枚举类(jdk5.0之前)

  1. persion对象的属性:使用final关键字修饰
  2. 创建类的构造器,并给对象的属性赋值
  3. 创建枚举类的多个对象
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关键字定义枚举类

  1. 提供枚举类的对象,对象之间使用",“分割,使用”;"结束
  2. 对象的属性
  3. 创建对象的构造器
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 注解

一、常见注解

  1. @Override
    表示方法声明旨在覆盖超类型中的方法声明。如果使用此注释类型注释方法,则除非至少满足以下条件之一,否则需要编译器生成错误消息:
  • 该方法将覆盖或实现在超类型中声明的方法。
  • 该方法具有与Object中声明的任何公共方法的[覆盖相同的签名
  1. @Deprecated
    注释@Deprecated的程序元素是程序员不鼓励使用的程序元素,通常是因为它是危险的,或者因为存在更好的替代方法。 编译器在不被弃用的代码中使用或覆盖不推荐使用的程序元素时发出警告。
  2. @SuppressWarnings
    表示在注释元素(以及注释元素中包含的所有程序元素)中应该抑制命名的编译器警告。请注意,给定元素中抑制的一组警告是所有包含元素中抑制的警告的超集。例如,如果您注释一个类来抑制一个警告并注释方法来抑制另一个警告,则两个警告将在该方法中被抑制。
    作为一种风格,程序员应该始终将这个注释用于最有效的嵌套元素。 如果要在特定方法中抑制警告,则应该注释该方法而不是其类。

二、自定义注解

  1. 注解声明为:@interface
  2. 内部定义成员,通常使用value表示
  3. 可以指定成员的默认值,使用default定义
  4. 如果自定义注解没有成员,表名是一个标记(标识作用)

三、JDK中的元注解

元注解用于修饰其他注解

  1. Retention:指示要注释具有注释类型的注解的保留时间
  • SOURCE 注释将被编译器丢弃。
  • CLASS 注释将由编译器记录在类文件中,但VM不需要在运行时保留。 (默认)
  • RUNTIME 注释将由编译器记录在类文件中,并由VM在运行时保留,因此可以反射读取。
  1. Target:指明被该注解修饰的注解能够修饰哪些元素

Enum Constant

Description

ANNOTATION_TYPE

注解类型声明

CONSTRUCTOR

构造函数声明

FIELD

字段声明(包括枚举常数)

LOCAL_VARIABLE

局部变量声明

METHOD

方法声明

PACKAGE

包装声明

PARAMETER

正式参数声明

TYPE

类,接口(包括注释类型)或枚举声明

TYPE_PARAMETER

键入参数声明

  1. Documented:
  2. Inherited:被该注解修饰的注解具有继承性

注解的开发:待。。。