Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中,@Nullable为什么有运行时租用_Java_Annotations_Nullable_Static Analysis - Fatal编程技术网

在Java中,@Nullable为什么有运行时租用

在Java中,@Nullable为什么有运行时租用,java,annotations,nullable,static-analysis,Java,Annotations,Nullable,Static Analysis,正如标题所说,拥有@Nullable和@Nonull可以帮助您的ide或linter在编译时捕获bug,但为什么它有运行时保留?可以想象,运行时保留将允许AOP代理检测传递给@Nonnull-注释参数的空参数,并引发异常或以其他方式处理它。您可能会争辩说,与在代码中使用显式空检查相比,这是一种更好的处理运行时空检查的方法 是的,这些注释对于静态编译检查非常有用,但是没有理由不能在运行时将它们用于相同的目的。它们作为注释的有效性扩展到了运行时域,这与用于代码生成之类的事情的注释不同。也许它通过让运

正如标题所说,拥有@Nullable和@Nonull可以帮助您的ide或linter在编译时捕获bug,但为什么它有运行时保留?

可以想象,运行时保留将允许AOP代理检测传递给
@Nonnull
-注释参数的空参数,并引发异常或以其他方式处理它。您可能会争辩说,与在代码中使用显式空检查相比,这是一种更好的处理运行时空检查的方法


是的,这些注释对于静态编译检查非常有用,但是没有理由不能在运行时将它们用于相同的目的。它们作为注释的有效性扩展到了运行时域,这与用于代码生成之类的事情的注释不同。

也许它通过让运行时相信不,实际上,此引用不是空的来防止NPE的发生。(对于@Nullable,这意味着如果重写该方法,则重写也应接受null值。要实现这一点,注释至少应该具有类保留。此注释是部分答案。@emory在重写带注释的方法时,类保留有何帮助?@SotiriosDelimanolis如果@Nullable保留在源代码级别,则我编写
void m(@Nullable p)
,并编译它,则类文件中不会有注释的痕迹。获取类文件并将其放在类路径中,扩展我的类并覆盖我的方法。您的ide或linter如何知道我的注释?