下面是源码:
1 package test; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 6 public class Test { 7 public static void main(String[] args) { 8 List<Integer> list = new ArrayList<>(); 9 //下面会触发编译器自动装箱 10 list.add(1); 11 //下面会触发编译器自动拆箱 12 int i = list.get(0); 13 } 14 }
编译,接着使用反编译工具反编译刚才得到的字节码文件,得到java类文件如下:
1 package test; 2 3 import java.util.ArrayList; 4 5 public class Test 6 { 7 public static void main(String[] args) { 8 java.util.List<Integer> list = new ArrayList(); 9 10 list.add(Integer.valueOf(1)); 11 12 int i = ((Integer)list.get(0)).intValue(); 13 } 14 }
总结:我们看到注释在字节码文件里是被过滤掉的,看不到的——注释是源码级别的。
而自动装箱和自动拆箱是加上去的,可以看到的——自动装箱/拆箱是字节码文件级别的。
泛型在字节码文件里没有加也没有减,还是可以看到的——泛型也是字节码文件级别的。
时间: 2024-10-12 20:11:58