当前位置: 首页 > 知识库问答 >
问题:

@可为空的批注用法

贝钧
2023-03-14

我在Java看到一些方法宣称为:

void foo(@Nullable Object obj)
{ ... }

这里的@nullable是什么意思?这是否意味着输入可能是null

没有注释,输入仍然可以是空的,所以我想这不只是它吗?

共有2个答案

晁英彦
2023-03-14

此注释通常用于消除NullPointerExceptions@nullable表示此参数可能为null。这种行为的一个很好的例子可以在Google Guice中找到。在这个轻量级的依赖注入框架中,您可以看出这个依赖可能是null。如果您试图在没有注释的情况下传递null,框架将拒绝执行它的工作。

此外,@nullable可以与@notnull批注一起使用。在这里你可以找到一些如何正确使用它们的小技巧。IntelliJ中的代码检查检查注释并帮助调试代码。

经佐
2023-03-14

它明确了该方法接受空值,并且如果重写该方法,也应该接受空值。

它还为FindBugs这样的代码分析器提供了提示。例如,如果这样的方法取消引用它的参数而不首先检查null,FindBugs将发出警告。

 类似资料:
  • 问题内容: 我想问问为什么Java注释使用了这么多…我知道它们在例如jpa中替换了xml配置,但是为什么要使用这种配置呢?考虑这段代码: 现在,当我尝试使用的persist方法将其置于持久性上下文中时,尝试持久化实例会遇到运行时错误(最好是出现编译错误)。对我来说,有一个明显的解决方案,强制实体实现某种无方法接口,而不是使用@Annotations。但这在框架设计人员中并不流行,此解决方案的缺点是

  • 下面是我的代码, 我无法用注释来注释类, Netbean IDE说注释类型不适用于这种声明。 我用netbeans运行JDK 1.6和Jaxb 1.5。 感谢您的任何帮助。

  • 我们正在构建某种自动自描述REST服务(实时文档生成)。为此,我们有一个控制器方法,它查找所有控制器beans,并获取请求映射信息,以便在一个友好的html页面中显示它们。 为此,我们使用 MetadataReader(通过 CachingMetadataReaderFactory 创建)来获取类的元数据。当我们获取公共方法的 MethodMetaData 时,我们会找到 RequestMappi

  • 问题内容: 因此,我知道您正在指定类型,但是为什么呢?在什么条件下会很重要。例如,如果我具有以下方法,并且注释掉@Produces批注,它仍将返回JSON。 API文档说:“如果未指定,则容器将假定可以产生任何类型。” 那么,为什么我不希望容器承担这种责任呢? 问题答案: 我认为这取决于您的JAX- RS实现,但这是泽西对其@Produces批注的解释:https ://jersey.java.n

  • 我已经编写了一个EJB3业务逻辑并部署在GlassFish下。现在,我将通过同一个容器中的客户机,用@EJB注入接口来测试它。 数据源bean是一个在构造函数中设置连接并通过get()方法释放的无状态bean

  • 问题内容: 可以继承@Repository批注吗? 我可以创建一个 然后扩展它而不指定@Repository批注? 我如何知道注释是否可以继承? 问题答案: 参见http://www.docjar.com/html/api/org/springframework/stereotype/Repository.java.html 没有@Inherited批注,因此它不会被继承。