一个类,如ExpiringCache$Entry.class,Entry是ExpiringCache的内部类但是,我发现一个ExpiringCache$1,请问这是什么文件? $1是什么东西

解决方案 »

  1.   

    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.List;
    import java.util.Random;public class Test {    public static void main(String[] args) {
            List<Integer> list = new ArrayList<Integer>(5);
            Random ran = new Random();
            for(int i = 0; i < 5; i++) {
                list.add(ran.nextInt(100));
            }
            // 下面中的那个 new Comparator<Integer>() 就是一个匿名类,会产生一个 Test$1.class 的字节码文件
            Collections.sort(list, new Comparator<Integer>() {
                    public int compare(Integer o1, Integer o2) {
                        int a = (o1 == null) ? 0 : o1;
                        int b = (o2 == null) ? 0 : o2;
                        return b - a;
                    }                
                });
            System.out.println(list);
        }
    }
      

  2.   


    编译主类时确定的,以声明的先后顺序从 1 开始。假如原本 Test 类中有 3 个匿名内部类,如果在第二个之后又建了一个,那新建的这个就是 $2 了,后面的依次为 $3、$4
      

  3.   

    这种类名不管是用 $1 还是 $2 对于开发人员来说没有任何关系,这是给 JVM 用的。