0注释/泛型/自动装箱/自动拆箱之反编译示例

下面是源码:

package com.test;

import java.util.ArrayList;
import java.util.List;

public class Test {
     public static void main(String[] args) {
         //下面的泛型会擦除
         List<Integer> list = new ArrayList<>(6);
         //下面会触发编译器自动装箱
         list.add(1);
         //下面会触发编译器自动拆箱
         int i = list.get(0);             
    }
}

 编译,接着使用反编译工具打开字节码文件,得到java源文件如下:

package com.test;

import java.util.ArrayList;
import java.util.List;

public class Test
{
  public static void main(String[] args)
  {
    List list = new ArrayList(6);

    list.add(Integer.valueOf(1));

    int i = ((Integer)list.get(0)).intValue();
  }
}

总结:我们看到注释和泛型在字节码文件里是被过滤掉的,看不到的——注释是源码级别的。

   而自动装箱和自动拆箱是加上去的,可以看到的——自动装箱/拆箱是字节码文件级别的。

原文地址:https://www.cnblogs.com/Mike_Chang/p/6618949.html