gpt4 book ai didi

java - @Nonnull 和 Objects.requireNonNull 有什么区别

转载 作者:搜寻专家 更新时间:2023-10-30 21:01:01 28 4
gpt4 key购买 nike

以下两个代码片段有什么区别。

public Integer getId(@Nonnull SomeObject obj){  
// do some stuff
return id;
}

public Integer getId(SomeObject obj){
Objects.requireNonNull(SomeObject, "SomeObject is null");
// do some stuff
return id;
}

它们之间的显着区别是什么。在这些情况下进行空检查的正确方法是什么。

最佳答案

两者是互补的:@Nonnull 注解记录了 obj 必须是非空的事实,而 Objects.requireNonNull 调用确保obj 在运行时是非空的。

你应该把两者结合起来,像这样:

public Integer getId(@Nonnull SomeObject obj){   
Objects.requireNonNull(SomeObject, "SomeObject is null");
// do some stuff
return id;
}

关于@Nonnull的相关文档可以找到here :

Optional Type Annotations are not a substitute for runtime validation

Before Type Annotations, the primary location for describing things like nullability or ranges was in the javadoc. With Type annotations, this communication comes into the bytecode in a way for compile-time verification.

Your code should still perform runtime validation.

关于java - @Nonnull 和 Objects.requireNonNull 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48103792/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com