Classname + $.是什么导致的?

Aja*_*jay 1 java inheritance

我有一个A类.我有一个A类的引用引用指向x类型的对象.什么样的对象使ref.getClass()打印A $ 1?$表示什么?

cle*_*tus 13

$表示内部类.在这种情况下:

public class A {
  public A() {
    Runnable r1 = new Runnable() {
      public void run() { ... }
    };
  }

  private static class Inner {
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)

构造函数中的Runnable将生成一个类文件A $ 1.class,而Inner类将创建一个名为A $ Inner.class的文件.

匿名内部类在遇到它们时从1顺序编号(虽然我不确定这种行为是否得到保证).命名的内部类在$后追加他们的名字.