A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lzw123451 中级黑马   /  2013-3-3 13:37  /  3242 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

匿名内部类生不生成.class文件
匿名内部类要不要加载

5 个回复

倒序浏览
匿名类会生成.class
应该也要加载的

生成的.class文件中,匿名类会生成OuterClass$1.class文件,数字根据是第几个匿名类而类推
回复 使用道具 举报
我觉得只要你调用,就加载吧 这个被包涵在它所在的外部类中了  是个 钻牛角尖 的人啊 ,哈哈
回复 使用道具 举报
本帖最后由 孙传磊 于 2013-3-3 18:57 编辑

至此 一楼 夏添
  其实这也是检查有没有内部类的一个客观的方法。就是要看一个类里有没有内部类,将它编译一下,看生成的文件(如使用的是eclipse 的话该文件在bin文件夹下测试类所对应的包中) 是否有内部类生成的.class文件,名称是“包装类名$内部类名.class”
可以通过下面的测试类证明一下:
package qq;

interface Test{
        void func();
}
class Demo{
        public static void main(String[] args){
                new Demo().show(new Test(){
                        public void func(){System.out.println("匿名内部类1");}                });
                new Demo().show(new Test(){
                        public void func(){System.out.print("匿名内部类2");}                });
        }

        private void show(Test t) {
                t.func();
               
        }
}
我们可以在bin文件夹下找到测试类所对应的qq包中看到新生成的
file:///D:/1.jpg
就是Demo$1.class 和Demo$2.class ,匿名内部类,主要是用到一个类只想使用一次的时才使用的,当程序运行到此就会把它们加载。
回复 使用道具 举报
肯定会生成class文件 匿名内部类的class文件格式是:外部类名$1.class。因为匿名内部类没有名字 所以在数字后面直接跟着.class 既然生成了class文件当然会加载
回复 使用道具 举报
会生成,只不过是系统自动命名
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马