java - new Class[]{} 和 new Class[0] 有区别吗?
问题描述
new Class[]{}
和有区别new Class[0]
吗?如果是,有什么不同?
解决方案
没有不同。
反编译这个:
final class Foo {
Class[] a = new Class[]{};
Class[] b = new Class[0];
}
产量
final class Foo {
java.lang.Class[] a;
java.lang.Class[] b;
Foo();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: aload_0
5: iconst_0
6: anewarray #2 // class java/lang/Class
9: putfield #3 // Field a:[Ljava/lang/Class;
12: aload_0
13: iconst_0
14: anewarray #2 // class java/lang/Class
17: putfield #4 // Field b:[Ljava/lang/Class;
20: return
}
也就是说,这两种形式产生相同的字节码。
推荐阅读
- c# - 如何使用 selenium c# 在列表框中选择超过 1 个项目?
- android - 选择图像相机/画廊时出现内存不足异常
- r - R `cor()` 样式结果,但带有 `Kendall's W`
- postgresql - posgresql-libreoffice(base):如何将heroku数据库连接到libreoffice base
- python - 如何避免服务器(使用python websockets)挂断?
- string-conversion - 将 String 转换为请求的 Nullable 数据类型
- oracle - 验证 Oracle 和 Elasticsearch 之间的数据一致性
- php - 如何从以@开头的 SimpleXMLElement 对象中获取值?
- spring - Spring批处理停止在应用程序启动时运行的ItemReader
- asp.net - Razor 页面中的 POST URL 缺少处理程序查询字符串