登录

去注册 忘记密码?

登录

注册

去登录

  • 扫码关注公众号
  • 发送“我爱安卓
  • 即可获取验证码

注册

解锁回答区域

  • 扫码关注公众号
  • 发送“我爱安卓

若你登陆,将永久解锁;
若未登录,仅本机解锁。

解锁回答区域

获取注册验证码

  • 扫码关注公众号
  • 发送“我爱安卓
  • 即可获取验证码

每日一问 Java编译器背后干了多少活 之 「内部类构造」

鸿洋    2020-08-23 23:54   收藏

我们来看一坨代码:

public class A{

    public static void main(String[] args){
        B b = new A.B();
    }


    private static class B{

    }

}

上述代码,如果我们执行javac A.java编译,会产生几个class文件?

我们分析下:

  1. A.class 肯定有
  2. 有个静态内部类B,还有个A$B.class

两个。

实际运行你会发现有三个:

  1. A.class
  2. A$B.class
  3. A$1.class

问题来了:

  1. 为什么会多了个A$1.class?
  2. Java里面java.lang.reflect.Method以及java.lang.Class都有一个isSynthetic()方法,是什么意思?

自助提问入口:点击提交问题

删除留言

确认删除留言,会导致相关评论丢失?

取消 确定