Gus*_*ave 3 java-8 type-annotation
对于以下签名:
public static String format(final String pattern, final @Nullable Object... arguments)
Run Code Online (Sandbox Code Playgroud)
@Nullable注释在哪里引用?对阵列或其元素?是否有可能注释两个选项(数组/元素)?
Java 7和Java 8(类型注释)之间是否存在差异?
Hol*_*ger 11
由于仍然没有标准@Nullable注释,因此您使用的是第三方库的注释,因此它取决于它的声明方式.Pre-Java 8注释不是类型注释,因为旧版本中不存在该功能.因此,使用这些注释,您始终注释参数而不是其类型.这通常被框架解释为"参数可以null",它可以是数组引用,尽管框架可以特别处理varargs,但是没有标准强制要求特定的行为.
当您使用真正的Java 8类型注释(即注释)时@Target(ElementType.TYPE_USE),通过使用普通数组声明来最好地解释结果:
@Nullable ElementType []
Run Code Online (Sandbox Code Playgroud)
声明一个@Nullable ElementType读取可空元素的数组,而
ElementType @Nullable []
Run Code Online (Sandbox Code Playgroud)
声明一个可以为null的数组类型.
因此,宣言
public static String format(final String pattern, final @Nullable Object... arguments)
Run Code Online (Sandbox Code Playgroud)
意味着该元件可以是null,而
public static String format(final String pattern, final Object @Nullable... arguments)
Run Code Online (Sandbox Code Playgroud)
声明数组引用可能是null.当然,你可以结合他们宣布两者的元素或阵列本身,可以null
public static String format(String pattern, @Nullable Object @Nullable ... arguments)
Run Code Online (Sandbox Code Playgroud)
如上所述,要使用这些选项,您需要一个注释类型,它实际上被声明为Java 8类型注释.然后,为了强制执行所描述的语义,您需要一个与Java 8类型注释兼容的最新检查器框架实现.
| 归档时间: |
|
| 查看次数: |
706 次 |
| 最近记录: |