黑马程序员技术交流社区
标题:
关于匿名内部类的问题
[打印本页]
作者:
晓风妮子
时间:
2013-4-21 16:44
标题:
关于匿名内部类的问题
匿名内部类在什么情况下使用?使用匿名内部类有什么好处呢?
作者:
hdsjsql
时间:
2013-4-21 16:59
匿名内部类:
1,匿名内部类其实就是内部类的简写格式。
2,定义匿名内部类的前提:
内部类必须是继承一个类或者实现接口。
3,匿名内部类的格式: new 父类或者接口(){定义子类的内容}
4,其实匿名内部类就是一个匿名子类对象。而且这个对象有点胖。 可以理解为带内
容的对象。
5,匿名内部类中定义的方法最好不要超过3个。
好处就是简化书写
作者:
up.yfei
时间:
2013-4-21 17:02
内部类:
就是在一个类里定义另外一个类,就叫内部类;
内部类可以直接访问外部类中的成员包括私有;
外部类访问内部类需要建立内部类对象;
使用匿名内部类是比较合适的:
只用到类的一个实例。
类在定义后马上用到。
类非常小
给类命名并不会导致你的代码更容易被理解。
匿名内部类的好处,我感觉就是懒人专用,呵呵
作者:
王海龙2013
时间:
2013-4-21 18:15
匿名内部类
就是内部类的简写格式,只能调用一次。
内部类必须继承一个类或实现接口。就是匿名子类对象。内部函数最好不超过3个。
new 父类或接口()
{
覆写函数或实现函数
}.调用函数();
作者:
黄玉昆
时间:
2013-4-22 08:17
如果问题未解决,请继续追问,如果问题解决了,请将问题分类改为“已解决”,谢谢
作者:
gerenvip
时间:
2013-4-22 08:43
本帖最后由 gerenvip 于 2013-4-22 08:46 编辑
给你举例说明一下吧。
public static void listDemo2()
{
File dir = new File("d:\\java\\day20");
<font color="red">String[] arr = dir.list(new FilenameFilter(){
public boolean accept(File dir,String name)
{
//System.out.println("dir:"+dir+" name:"+name);
return name.endsWith(".java");
}
});//</font>匿名内部类
System.out.println("len:"+arr.length);
for(String name : arr)
{
System.out.println(name);
}
}
复制代码
上面这个代码是毕老师视频中的演示示例。实现的功能是查找指定目录中所有java文件。需要使用
list(FilenameFilter filter)方法,但是方法需要传递一个FilenameFilter接口的实例。
其实不想使用匿名内部类的话,完全可以单独定义一个类实现接口FilenameFilter,然后new一个对象,传递到
list(FilenameFilter filter)方法中,但是这个接口中仅有一个方法accept。这时如果使用匿名内部类就显得十分轻便,如楼上所说的,给懒人使用的,哈哈,其实在适当的时候使用匿名内部类给人清晰简洁的感觉。
希望能帮到你
作者:
Akm
时间:
2013-4-22 09:11
本帖最后由 Akm 于 2013-4-22 09:12 编辑
当想要定义一个回调函数且不想编写大量代码时,使用匿名内部类比较快捷。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2