java中.class文件命名规则

会关注这个问题,一般是在遍历 .class 文件过程中出问题,编译文件目录下,有不少文件名是带 $ 符号的。

这些对象大都是一些内部类、匿名对象,大都不能通过 Class.forFame(String str) 实例化。

  • 内部类的 class 文件命名是:主类+$+内部类名
  • 匿名类的 class 文件命名是:主类+$+(1,2,3....)

可以用下面的代码,感受一下效果。

  • 普通的全类名:com.yt.test.Outer2
  • 匿名内部类:com.yt.test.Outer1$1
  • 内部类:com.yt.test.Outer2$Inner
public class Outer1 {
  public void test(){
    JButton btn=new JButton("test");
    // ActionListener 将编译成 Outer1$1
    btn.addActionListener(new ActionListener() {
      
      @Override
      public void actionPerformed(ActionEvent e) {
        System.out.println("test");
      }
    });
  } 
}

public class Outer2 {
  // Inner 将编译成 Outer2$Inner
  public class Inner{
  }
}

posted on 2017-06-15 15:15  疯狂的妞妞  阅读(3129)  评论(0编辑  收藏  举报

导航