Skip to content

空值安全工具(nullness 包)

位于 dev.anvilcraft.lib.v2.util.nullness,提供非空/可空类型注解与对应的函数式接口。

注解

  • @NonnullType – 可用于类型参数的非空声明(javax.annotation.Nonnull 的替代)
  • @NullableType – 同上,用于可空类型
  • @FieldsAreNonnullByDefault – 应用于包或类,声明字段默认为非空

函数式接口

接口对应 Java 类型描述
NonNullSupplier<T>Supplier<T>不允许返回 null
NonNullConsumer<T>Consumer<T>参数非空
NonNullBiConsumer<T,U>BiConsumer<T,U>两个参数均非空
NonNullFunction<T,R>Function<T,R>参数和返回值均非空
NonNullBiFunction<T,U,R>BiFunction<T,U,R>参数和返回值均非空
NonNullUnaryOperator<T>UnaryOperator<T>参数和返回值均非空

所有接口均支持组合(andThen)和静态工厂 noop()(空操作),NonNullSupplier 额外提供 lazy()of(Supplier) 转换。

版本间导入路径

由于 module.util 在部分版本中未作为独立模块发布,nullness 包的导入路径存在版本差异:

版本范围导入路径
1.21.1import dev.anvilcraft.lib.v2.util.nullness.NonNullSupplier;
1.21.2–1.21.11import dev.anvilcraft.lib.v2.registrum.util.nullness.NonNullSupplier;
26.1import dev.anvilcraft.lib.v2.util.nullness.NonNullSupplier;(恢复)

1.21.2–1.21.11 版本中 module.util 因产能限制未同步,nullness 函数式接口被内嵌到 module.registrum 中以保障 Registrum 可独立编译。26.1 中随 module.util 恢复同步,导入路径迁回。

已废弃接口

  • NullableSupplier<T> – 请使用 Supplier<T> 直接标注 @Nullable

Released under the CC-BY-NC-SA 4.0 License.