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

本帖最后由 薆情媬証書 于 2013-10-16 22:25 编辑

先看下代码

  1. <p>File dir = new File("d:\\java");
  2. String[] arr = dir.list(new FilenameFilter()
  3. {
  4. public boolean accept(File dir, String name)
  5. {
  6.   return false;
  7. }
  8. }); </p>
复制代码
该段代码中,第二句代码的含义??
还有FilenameFilter不是抽象类吗,抽象类不是不能有对象吗,怎么用了new呢?

还有,最好能写出该内部类不简写的原码。
先谢过!

评分

参与人数 1技术分 +1 收起 理由
李江 + 1

查看全部评分

4 个回复

倒序浏览
这个应该叫匿名内部类的问题。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
源码如下:
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;
          }
});

评分

参与人数 1技术分 +1 收起 理由
李江 + 1

查看全部评分

回复 使用道具 举报
问题解决后把帖子状态改为提问结束...谢谢楼楼了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马