• 20220507 Core 7. Nullsafety


    前言

    文档地址

    尽管 Java 不允许您通过其类型系统表达 null 安全性,但 Spring 框架在 org.springframework.lang 包中提供了以下注解,让您可以声明 API 和字段的可空性:

    • @Nullable :表示特定 参数、返回值或字段 可以是 null
    • @NonNull :用于指示特定 参数、返回值或字段 不能为 null (已经使用了 @NonNullApi@NonNullFields 的参数/返回值和字段不需要使用此注解)
    • @NonNullApi :包级别的注解,将非空声明为 参数返回值 的默认语义
    • @NonNullFields :包级别的注解,将非空声明为 字段 的默认语义

    Spring Framework 本身利用了这些注解,但它们也可以用于任何基于 Spring 的 Java 项目来声明空安全的 API 和可选的空安全字段。尚不支持 泛型类型参数、可变参数和数组元素 可空性。方法体内使用的类型的可空性超出了功能范围。

    其他常用库(如 Reactor 和 Spring Data)提供使用类似可空性安排的空安全 API。

    用例

    除了为 Spring Framework API 可空性提供显式声明之外,IDE(例如 IDEA 或 Eclipse)可以使用这些注解来提供与空安全相关的有用警告,以避免在运行时发生 NullPointerException

    JSR-305 元注解

    Spring 注解使用 JSR 305 注解进行元注解。JSR-305 元注解让 IDEA 或 Kotlin 等工具供应商以通用方式提供空安全支持,而无需对 Spring 注解进行硬编码支持。

    不建议将 JSR-305 依赖项添加到项目类路径以利用 Spring 空安全 API。只有基于 Spring 的库的项目,在他们的代码库使用空安全注解应该增加 com.google.code.findbugs:jsr305:3.0.2compileOnly Gradle 配置或 Maven provided 作用域,以避免编译警告。

  • 相关阅读:
    RabbitMQ一:消息队列的认识
    RabbitMQ二:AMQP协议
    SVN中如何去除版本控制器
    Asp.net:MVC认识
    时间连接查询展示
    C#string类型总结
    JavaScript01天学习笔记分享
    UML中的类图及类图之间的关系
    23 种设计模式的分类和功能
    WCF入门
  • 原文地址:https://www.cnblogs.com/huangwenjie/p/16361199.html
Copyright © 2020-2023  润新知