黑马程序员技术交流社区
标题:
一个关于接口的问题
[打印本页]
作者:
赵晓东
时间:
2013-3-19 13:52
标题:
一个关于接口的问题
本帖最后由 赵晓东 于 2013-3-19 20:24 编辑
/*File_List*/
import java.io.*;
class ListDemo
{
public static void main(String[] args)
{
list2();
}
public static void list1()
{
File fi = new File("E:\\");
String[] fil = fi.list();
for (String file: fil)
{
System.out.println(file);
}
}
public static void list2()
{
File f = new File("E:\\javase");
File[] fi = f.listFiles(new FilenameFilter() //疑问在这里,为什么这个接口创建了对象
{
public boolean accept(File dir,String name)
{
return name.endsWith(".java");
}
});
for (File fil : fi)
{
System.out.println("name: "+fil.getName()+" size : "+fil.length()+"字节");
}
}
}
/*
public interface FilenameFilter
这是个接口,为什么new了一个对象?
匿名内部类 如果实现接口,不用写implements吗?
*/
复制代码
作者:
张亚青
时间:
2013-3-19 14:13
本帖最后由 张亚青 于 2013-3-19 14:14 编辑
【匿名内部类】
匿名内部类
1、匿名内部类其实就是内部类的简写格式。
2、定义匿名内部类的前提:
内部类必须是继承一个类或者实现接口。
3、匿名内部类的格式:new 父类或者接口(){定义子类的内容}
4、其实匿名内部类就是一个匿名子类对象。
5、匿名内部类中定义的方法最好不要超过3个。
匿名内部类就是为了简化书写,覆盖方法。
匿名内部类不能进行强转(向上转型)。
【答案】在本题中参照第3点可以看出,这是规定好的创建匿名内部类的格式。
作者:
郝强勇
时间:
2013-3-19 14:35
File[] fi = f.listFiles(new FilenameFilter() //疑问在这里,为什么这个接口创建了对象?
{
public boolean accept(File dir,String name)
{
return name.endsWith(".java");
}
});
这是个匿名内部类,并不是接口创建的对象,接口是不能创建对象的,表面上看是接口创建的对象,但后面的那对儿代码块{}实质是创建了一个匿名的类去实现了接口,并创建了实例对象,这个过程是一气呵成的,中间省略了一些细节,所以代码简单,不需要用到implements关键字。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2