Java 1.8 Annotations 注解

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

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

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

  • 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...点击查看项目介绍 ;
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;

截止目前, 星球 内专栏累计输出 50w+ 字,讲解图 2200+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 1700+ 小伙伴加入学习 ,欢迎点击围观

在本小节中,我们将详细探讨 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 的注解。