内部类笔记2-匿名内部类编译时会不会生成class文件

匿名内部类编译时会不会生成class文件,下面来验证

我们知道 在一个类里如果有内部类,则编译是会产生两个class文件,一个类class  一个是内部类class,那么匿名内部类会不会也编译出来一个class呢,我们定义一个接口(接口会单独生成一个class),然后匿名生成这个接口的实例,再编译这个类,看看结果如何:

原始类如下:

public class MyClass {

    private MyInterface myInterface = new MyInterface() {
        @Override
        public void onTaskClick() {

        }
    };

    public interface MyInterface {
        void onTaskClick();
    }

}
javac 编译后如下:

   我们看到生成了一个接口的class文件和 MyClass$1.class文件,这个文件是系统自动为我们起了一个名字 1,也就是说即使我们没有为这个class命名,还是被系统赋予了名字
生成的内部类


classMyClass$1

 implements MyClass.MyInterface

{

  MyClass$1(MyClass paramMyClass) {}

  

 public void onTaskClick() {}

}


结论:匿名内部类编译后会生成class文件,名称是 1、2...数字

如果我们增加接口个数并相应增加匿名内部类,再次编译,则会相应生成 MyClass$2.classMyClass$3.class...等class文件



阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lvhailing1986/article/details/79054089
个人分类: 内部类笔记
上一篇内部类笔记1-静态内部类持有外部类引用验证
下一篇Android搭建maven环境,并管理依赖
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭