Java 1.8 Annotations 注解

更新时间 2023-07-26 08:41:59

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡 / 赠书活动

目前, 星球 内第一个项目:全栈前后端分离博客项目,演示地址:http://116.62.199.48/, 1.0 版本已经更新完毕,正在更新 2.0 版本。采用技术栈 Spring Boot + Mybatis Plus + Vue 3.x + Vite 4手把手,前端 + 后端全栈开发,从 0 到 1 讲解每个功能点开发步骤,1v1 答疑,陪伴式直到项目上线,目前已更新了 224 小节,累计 35w+ 字,讲解图:1544 张,还在持续爆肝中,后续还会上新更多项目,目标是将 Java 领域典型的项目都整上,如秒杀系统、在线商城、IM 即时通讯、权限管理等等,已有 1000+ 小伙伴加入,欢迎点击围观

在本小节中,我们将详细探讨 Java 8 的注解(Annotations)。你可能在写 Java 代码的时候见过 @Override@Deprecated@SuppressWarnings 等这样的符号,这就是我们要讨论的注解。那么,开始吧!

1. 注解是什么?

在 Java 中,注解是一种元数据,可以为我们的代码提供附加信息。这些信息可以被编译器、开发工具或者运行时环境所利用,来做出各种不同的操作。它不会直接影响代码逻辑,但可以影响代码如何被处理。

@Override
public String toString() {
    return "This is a sample class!";
}

这里,@Override 注解告诉编译器这个方法覆盖了父类的 toString 方法。如果没有这样的方法被覆盖,编译器会报错。

2. Java 8 对注解的改进

在 Java 8 之前,注解只能被用在声明的上方,如类、方法、字段等。Java 8 带来了两个重要的改进:

  • 可重复注解(Repeatable Annotations):在 Java 8 中,我们可以在同一个地方多次使用相同的注解。
  • 类型注解(Type Annotations):我们可以使用注解来注释任何我们使用类型的地方,如变量、抛出的异常等。

3. 定义注解

定义一个注解非常简单,只需要使用 @interface 关键字,如下所示:

public @interface MyAnnotation {
    String value() default "";
}

4. 使用注解

我们可以在类、方法、变量等地方使用注解,只需要在其前面加上 @注解名 即可:

@MyAnnotation("Hello")
public class MyClass {
    // 类的代码...
}

5. 可重复注解

如果我们想要在同一个地方多次使用同一个注解,我们需要在定义注解的时候声明它为 @Repeatable,然后指定一个“容器”注解来存储这些重复的注解:

@Repeatable(MyAnnotations.class)
public @interface MyAnnotation {
    String value() default "";
}

public @interface MyAnnotations {
    MyAnnotation[] value();
}

这样,我们就可以在同一个地方多次使用 MyAnnotation 注解:

@MyAnnotation("Hello")
@MyAnnotation("World")
public class MyClass {
    // 类的代码...
}

6. 类型注解

在 Java 8 中,我们可以在任何使用类型的地方使用注解,例如变量声明、抛出的异常等。例如,我们可以定义一个 @NonNull 注解,然后在变量声明的时候使用它:

public @interface NonNull {}

public class MyClass {
    public void myMethod(@NonNull String str) {
        // 方法的代码...
    }
}

这样,我们可以在运行时检查 str 是否为 null,如果为 null,则抛出一个异常。

7. 总结

注解是 Java 中的一个强大工具,可以帮助我们提供代码的元数据,以此来改变代码的处理方式。Java 8 对注解进行了一些改进,增加了更多的灵活性和实用性。希望这篇教程可以帮你理解和使用 Java 8 的注解。