枚举

格式

简单格式

主要方法

  1. public class Demo1 {
  2. public static void main(String[] args) {
  3. int i = LevelValue.LOW.compareTo(LevelValue.HIGH);
  4. System.out.println(i);//-2
  5. System.out.println(LevelValue.LOW.name());//LOW
  6. System.out.println(LevelValue.LOW.compareTo(LevelValue.LOW));//0
  7. System.out.println(LevelValue.LOW.equals(LevelValue.LOW));//true
  8. System.out.println(LevelValue.LOW.toString());//LOW
  9. System.out.println(LevelValue.HIGH.ordinal());//2
  10. LevelValue x = Enum.valueOf(LevelValue.class, "HIGH");
  11. System.out.println(x.name());//HIGH
  12. x.show();
  13. }
  14. }

实现接口

  1. public enum LevelValue implements LShow{
  2. LOW{
  3. @Override
  4. public void show() {
  5. System.out.println("低等级");
  6. }
  7. },MEDIUM{
  8. @Override
  9. public void show() {
  10. System.out.println("中等级");
  11. }
  12. },HIGH{
  13. @Override
  14. public void show() {
  15. System.out.println("高等级");
  16. }
  17. };
  18. }
  19. interface LShow{
  20. public void show();
  21. }

注意事项

  • 一旦定义了枚举,最好不要妄图修改里面的值,除非修改是必要的。
  • 枚举类默认继承的是java.lang.Enum类而不是Object类
  • 枚举类不能有子类,因为其枚举类默认被final修饰
  • 只能有private构造方法
  • switch中使用枚举时,直接使用常量名,不用携带类名
  • 不能定义name属性,因为自带name属性
  • 不要为枚举类中的属性提供set方法,不符合枚举最初设计初衷。

注解

Java 语言中的类、方法、变量、参数和包等都可以被标注。和注释不同,Java 标注可以通过反射获取标 注内容。在编译器生成类文件时,标注可以被嵌入到字节码中。Java 虚拟机可以保留标注内容,在运行 时可以获取到标注内容

  • 概念
  • 怎么使用内置注解
  • 怎么自定义注解
  • 反射中怎么获取注解内容

内置注解

  • @Override : 重写 *
    • 定义在java.lang.Override
  • @Deprecated:废弃
    • 定义在java.lang.Deprecated
  • ////@SafeVarargs
    • Java 7 开始支持,忽略任何使用参数为泛型变量的方法或构造函数调用产生的警告。
  • @FunctionalInterface: 函数式接口 *
    • Java 8 开始支持,标识一个匿名函数或函数式接口。
  • ////@Repeatable:标识某注解可以在同一个声明上使用多次
    • Java 8 开始支持,标识某注解可以在同一个声明上使用多次。
  • @SuppressWarnings:抑制编译时的警告信息。 *
    • 定义在java.lang.SuppressWarnings 三种使用方式
    • @SuppressWarnings(“unchecked”) [^ 抑制单类型的警告]

@SuppressWarnings(“unchecked”,”rawtypes”) [^ 抑制多类型的警告]
@SuppressWarnings(“all”) [^ 抑制所有类型的警告]

元注解

作用在其他注解的注解

  • @Retention - 标识这个注解怎么保存,是只在代码中,还是编入class文件中,或者是在运行时可 以通过反射访问。
  • @Documented - 标记这些注解是否包含在用户文档中 javadoc。
  • @Target - 标记这个注解应该是哪种 Java 成员。
  • @Inherited - 标记这个注解是自动继承的

    自定义注解

    反射