黑马程序员技术交流社区
标题:
哎,又是关于内部类的问题,一直没搞明白
[打印本页]
作者:
薆情媬証書
时间:
2013-10-16 19:09
标题:
哎,又是关于内部类的问题,一直没搞明白
本帖最后由 薆情媬証書 于 2013-10-16 22:25 编辑
先看下代码
<p>File dir = new File("d:\\java");
String[] arr = dir.list(new FilenameFilter()
{
public boolean accept(File dir, String name)
{
return false;
}
}); </p>
复制代码
该段代码中,第二句代码的含义??
还有FilenameFilter不是抽象类吗,抽象类不是不能有对象吗,怎么用了new呢?
还有,最好能写出该内部类不简写的原码。
先谢过!
作者:
loading……99.9
时间:
2013-10-16 19:24
第二句表示该方法接受一个FilenameFilter类型的参数,FilenameFilter是个接口,楼主真应该好好看看匿名内部类了,上面的代码等同于
File dir = new File("d:\\java");
String[] arr = dir.list(new MyFilenameFilter());
class MyFilenameFilter implements FilenameFilter
{
public boolean accept(File dir, String name)
{
return false;
}
}
复制代码
作者:
呆萌
时间:
2013-10-16 19:29
这个应该叫匿名内部类的问题。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
源码如下:
String[] arr = dir.list(子类对象);
class 子类 extends 父类 (或者implements 接口)
{
覆盖父类或者接口中的方法;
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
匿名内部类从名字上就知道子类是没有名字的,所以用父类或者接口名实例化,就是:
new 父类名或者接口名(){复写父类或者接口中的方法}
String[] arr = dir.list(new FilenameFilter(){public boolean accept(File dir, String name){return false;}});
为了阶梯层次阅读性,分行之后:
String[] arr = dir.list(new FilenameFilter()
{
public boolean accept(File dir, String name)
{
return false;
}
});
作者:
李江
时间:
2013-10-16 19:35
问题解决后把帖子状态改为提问结束...谢谢楼楼了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2