我在使用IntelliJ IDEA 2020.2时启用了检查“@NotNull/@Nullable problems”。在编写自定义ThreadFactory时,我在newThread
的参数上收到IntelliJ IDEA检查警告“Not annotated parameter overrides@NotNull parameter”:
@Override
public Thread newThread(Runnable runnable) {...}
爪哇。util。同时发生的ThreadFactory接口不注释runnable
。IDEA的代码分析暗示了注释。
我不想添加任何注释。除了禁用IntelliJ检查,我还能做什么?(事实上,我想问为什么IDEA认为它不是null,因为在那里传递null不会是一个错误;您只会得到一个不运行runnable的线程。)
可空性注释源于JSR-305,IntelliJ IDEA有自己的实现。
首先,IntelliJ IDEA有一个称为外部注释的概念。它只是包含项目和JDK的可空性注释的XML文件的集合。按命令
可以找到您的外部配置
(在macOS中)并导航到SDK、特定SDK和注释选项卡:
打开所谓的jar,您可以在那里看到IDEA强制默认注释:
因此,
ThreadFactory
的newThread
方法对@NotNull
进行了注释。如果您重写带nullability注释的方法并且不提供nullability注释,则注释信息将被重写(即,不再提供nullability注释信息),这正是IDEA警告报告。这实际上是正常的,但是您可以通过注释newThread
方法参数@NotNull
或删除jdkan注释来消除警告。SDK设置中的jar
。
事实上,来自Spring的重写/实现方法将招致类似的警告(例如,BeanPost处理器),因为Spring通常在
package-info.java
文件中具有包级别的可空性注释。
顺便说一句,JSR-305的状态多年来一直处于Hibernate状态。在野外存在多个实现:
喷气式飞机
问题内容: 我刚刚开始在Java 8中使用注释,并得到了一些意外的结果。 我有这样的方法: 我编写了一个JUnit测试,为参数searchList传递了空值。我原以为会发生某种类型的错误,但好像没有注释就通过了。这是预期的行为吗?据我了解,这是允许您跳过编写样板空检查代码。 对于@NotNull应该做什么的解释将不胜感激。 问题答案: 和自己做什么。它们应该充当文档工具。 该注释提醒您在以下情况下
我编写了一个JUnit测试,为参数searchingList传入null值。我原以为会发生某种类型的错误,但结果好像注释不在那里一样。这是意料之中的行为吗?根据我的理解,这是允许您跳过编写样板空校验代码。 如果能解释一下@NotNull到底应该做什么,将会非常感谢。
问题内容: 尝试运行此查询时出现以下错误。 org.hibernate.QueryException:序数参数未绑定:2“, 如果我改变 用 ,那么它的工作原理。我不知道为什么它不起作用。任何的想法? 注意:可见性是Upgrade类中的类型。 问题答案: 问题是您在查询中仅声明了一个绑定参数,但在方法中实际上只有两个参数。 这是因为在绑定参数中实际上是由于字符串引号引起的字符串文字。如果希望将其作
我在想一个一般的请求映射问题。在不选择任何特定MVC框架的情况下,将基于注释的请求映射与简单的参数检查器映射进行比较,哪一个更好? 假设我想创建一个web服务,它应该处理例如“添加”和“删除”操作。 使用注释,它看起来像这样: 使用参数,它将如下所示: 在第二个示例中,假设Operation对象是从JSON对象构建的。我们的想法是,我们只有一个通用的操作,它有一个类型参数,我们总是调用相同的请求(
我有一个可用于注释的方面: 连接点: 我可以在具有
问题内容: 今天,我遇到了一个以前从未见过的错误(在PDO中),但是当您考虑一下时,它是显而易见的。 我收到以下错误: 我使用的查询类似于以下内容: 显然,我有更多的参数和更长的查询。 为什么会给我这个错误? 问题答案: 解决方案是显而易见的:PDO不理会注释,而是尝试绑定不存在的变量’:Z’。您不能在PDO的注释中使用参数(除非您绑定它们)。 在注释中使用问号也存在类似的错误。