我正在Android Studio上进行代码检查,弹出以下警告
Probable bugs
@NotNull/@Nullable problems
Not annotated method overrides method annotated with @RecentlyNonNull
Run Code Online (Sandbox Code Playgroud)
对于以下代码
@Override
public String toString() {
return title;
}
Run Code Online (Sandbox Code Playgroud)
我之前看过@NonNull注释,这意味着返回永远不能为空.但是什么是@RecentlyNonNull?我什么时候使用它?
这没有提供任何解释.
lint recomendation是添加该注释,但它做了什么?
dav*_*xxx 19
我对你的问题没有一个简单而直接的答案,但我可能会给你一些指示.
请注意,这个注释是不存在的SDK的javadoc 的@RecentlyNonNull分装.
1)就生成的Javadoc而言,此存根注释意味着@NonNull最近添加了该注释.
您可以在@RecentlyNonNull类源代码中找到相关信息:
"$ARG_DOC_STUBS ", "Generate documentation stub source files for the API. Documentation stub " +
"files are similar to regular stub files, but there are some differences. For example, in " +
"the stub files, we'll use special annotations like @RecentlyNonNull instead of @NonNull to " +
"indicate that an element is recently marked as non null, whereas in the documentation stubs we'll " +
"just list this as @NonNull...
在这个googlesource文档中:
这里有一些注释不在支持库中,例如
@NonNull和@NonNull.这些仅在存根中用于自动标记最近使用null/non-null注释的代码.我们不希望在源代码中使用这些注释; 最近的ness在构建时计算并注入到存根中以代替正常的空注释.
但它似乎也可能在IDE警告/错误中使用.
2)根据这个博客,这个约束起源于Kotlin支持,并允许编译器/ linter根据非null约束的最近值来应用非null违规的严重性级别(最近:警告编译,而不是最近:错误汇编):
通常,Kotlin中的可空性合同违规会导致编译错误.但是为了确保新注释的API与您现有的代码兼容,我们使用Kotlin编译器团队提供的内部机制来标记最近注释的API.最近注释的API只会产生警告而不是来自Kotlin编译器的错误.您需要使用Kotlin 1.2.60或更高版本.
我们的计划是让新添加的可空性注释仅生成警告,并将严重性级别提高到下一年的Android SDK中的错误.目标是为您提供足够的时间来更新代码.
| 归档时间: |
|
| 查看次数: |
3721 次 |
| 最近记录: |