有没有什么工具能够比较直观的协助我们理解Java语法糖,列如Integer和int拆箱装箱、字符串拼接、泛型类型擦除、不定长参数呢
Jad下载安装配置
参考:Jad安装下载配置
前置准备
编译java文件(javac xxx.java)->反编译class文件(jad -o xxx.class)

装箱和拆箱
Integer it = 127;
int i = it;
使用jad反编译如下:

可以看到装箱时实则调用的是Integer.valueOf()方法,拆箱调用的是Integer.intValue()方法
字符串拼接
String str = "a" + "b";
String str1 = str + "cd";
使用jad反编译如下:

可以看到如果是常量字符串拼接编译时是直接拼接成字符串常量,如果是拼接的变量编译时会创建StringBuilder对象调用append方法进行拼接
泛型类型擦除
List<Integer> list1 = new ArrayList<Integer>();
List<String> list2 = new ArrayList<String>();
使用jad反编译如下:

可以看到泛型类型编译时被擦除掉了
不定长参数
public static void main(String[] args) {
print(1,2,3);
}
private static void print(int ...args) {
for (int i = 0; i < args.length; i++) {
System.out.println(args[i]);
}
}
使用jad反编译如下:

可以看到不定长参数编译时被转化为了数组
© 版权声明
文章版权归作者所有,未经允许请勿转载。如内容涉嫌侵权,请在本页底部进入<联系我们>进行举报投诉!
THE END















暂无评论内容