Java基础(七) -- 枚举和注解

枚举

  • 自定义枚举类
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    public class Season {
    private String name;
    private String desc;

    // 枚举对象/属性使用 final+static 共同修饰,实现底层优化
    public static final Season SPTING = new Season("春天","温暖");
    public static final Season SUMMMER = new Season("夏天","炎热");
    public static final Season AUTUMN = new Season("秋天","凉爽");
    public static final Season WINTER = new Season("冬天","寒冷");

    // 1.私有化构造器防止外部可以直接实例化对象
    private Season(String name, String desc) {
    this.name = name;
    this.desc = desc;
    }

    // 2. 只允许访问属性,不允许修改属性
    public String getName() {
    return name;
    }

    public String getDesc() {
    return desc;
    }
    }
  • 使用 enum 定义枚举
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class Main {
    public static void main(String[] args) {
    Season spring = Season.SPTING;
    // 输出枚举对象的名称
    System.out.println(spring.name());
    // 获取所有枚举对象
    Season[] values = Season.values();
    for (Season se: values) {
    System.out.println(se);
    }
    }
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    enum Season {
    // 枚举对象/属性使用 final+static 共同修饰,实现底层优化
    SPTING("春天","温暖"),SUMMMER("夏天","炎热"),AUTUMN("秋天","凉爽"),WINTER("冬天","寒冷");

    private String name;
    private String desc;

    private Season(String name, String desc) {
    this.name = name;
    this.desc = desc;
    }

    public String getName() {
    return name;
    }

    public String getDesc() {
    return desc;
    }
    }
  • 注意事项
  1. 当我们使用enum关键字开发一个枚举类型时,默认会继承Enum类,而且是一个final类
  2. 当使用无参构造器创建枚举对象时,则实参列表和小括号都可以省略
  3. 当有多个枚举对象时,使用,间隔,最后一个分号结尾
  4. 枚举对象必须放在枚举类的行首
  5. enum 不允许继承其他类,因为它隐式的继承了Enum类,但是他可以实现接口

注解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import java.util.ArrayList;

public class Season {
public static void main(String[] args) {
B b = new B();
b.say();
b.talk();

// 抑制错误
@SuppressWarnings({"unused","rawtypes"})
ArrayList list = new ArrayList();

}
}

class A {
public void say(){

}
}

class B extends A{
// 重写
@Override
public void say() {
super.say();
}

// 废弃的方法
@Deprecated
public void talk(){

}
}

  • 四类元注解 【了解】
  1. Retention //指定注解的作用范围 SOURCE/CLASS/RUNTIME
  2. Target // 指定注解可以在那些地方使用
  3. Documented // 指定该注解是否会在javadoc体现
  4. Inherited // 子类会继承父类注解