黑马程序员技术交流社区
标题:
匿名内部类生不生成.class文件
[打印本页]
作者:
lzw123451
时间:
2013-3-3 13:37
标题:
匿名内部类生不生成.class文件
匿名内部类生不生成.class文件
匿名内部类要不要加载
作者:
wahaha
时间:
2013-3-3 15:08
匿名类会生成.class
应该也要加载的
生成的.class文件中,匿名类会生成OuterClass$1.class文件,数字根据是第几个匿名类而类推
作者:
杨玉辉
时间:
2013-3-3 15:08
我觉得只要你调用,就加载吧 这个被包涵在它所在的外部类中了 是个 钻牛角尖 的人啊 ,哈哈
作者:
孙传磊
时间:
2013-3-3 18:47
本帖最后由 孙传磊 于 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 ,匿名内部类,主要是用到一个类只想使用一次的时才使用的,当程序运行到此就会把它们加载。
作者:
谢冬
时间:
2013-3-7 22:03
肯定会生成class文件 匿名内部类的class文件格式是:外部类名$1.class。因为匿名内部类没有名字 所以在数字后面直接跟着.class 既然生成了class文件当然会加载
作者:
张鹏
时间:
2013-3-8 16:39
会生成,只不过是系统自动命名
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2