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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 何旭程 中级黑马   /  2013-4-1 14:34  /  1605 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 何旭程 于 2013-4-3 15:24 编辑
  1.               FilenameFilter filter = new FilenameFilter(suffix) {
  2.                         
  3.                         private String suffix;
  4.                         
  5.                         FilenameFilter(String suffix) {
  6.                                 
  7.                                 this.suffix = suffix;
  8.                         }

  9.                         @Override
  10.                         public boolean accept(File dir, String name) {
  11.                                 
  12.                                 return name.endsWith(suffix);
  13.                         }        
  14.                 };        
复制代码

如上代码,我原本打算写一个匿名的过滤器,并通过传递字符串参数指定需要过滤的后缀名,不过Eclipse报错,并提示:Anonymousclasses cannot contain explicitly declared constructors.,最后我是通过导入外部过滤器实现的。
       我想问的是:匿名类有没有构造函数?如果有构造函数,那么在运行时的载入过程又是怎样的?是不是不能重载带参数的构造函数?


评分

参与人数 1技术分 +1 收起 理由
张熙韬 + 1

查看全部评分

5 个回复

倒序浏览
匿名内部类的特点:
1,一个类用于继承其他类或是实现接口,并不需要增加额外的方法,只是对继承方法的事先或是覆盖。
2,只是为了获得一个对象实例,不需要知道其实际类型。
3,类名没有意义,也就是不需要使用到。
注:一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类,没有类名,根据多态,我们使用其父类名。因他是局部内部类,那么局部内部类的所有限制都对其生效。匿名内部类是唯一一种无构造方法类。

评分

参与人数 1技术分 +1 收起 理由
张熙韬 + 1

查看全部评分

回复 使用道具 举报
分析:构造函数名和类名相同,匿名类是没有名字的,那么构造函数也没有名字。
毕老师笔记:
匿名内部类:
1,匿名内部类其实就是内部类的简写格式。
2,定义匿名内部类的前提:
        内部类必须是继承一个类或者实现接口。
3,匿名内部类的格式:  new 父类或者接口(){定义子类的内容}
4,其实匿名内部类就是一个匿名子类对象。而且这个对象有点胖。        可以理解为带内容的对象。
5,匿名内部类中定义的方法最好不要超过3个。

评分

参与人数 1技术分 +1 收起 理由
张熙韬 + 1

查看全部评分

回复 使用道具 举报
王瑞 发表于 2013-4-1 16:43
匿名内部类的特点:
1,一个类用于继承其他类或是实现接口,并不需要增加额外的方法,只是对继承方法的事先 ...

局部内部类 是可以有 构造方法的


class Outer
{
        int x = 3;

        void method(final int a)
        {
                final int y = 4;
                class Inner
                {
                        void function()
                        {
                                System.out.println(y);
                        }
                }
        
                new Inner().function();//这里就是默认构造方法
               
        }
}


class  InnerClassDemo3
{
        public static void main(String[] args)
        {
                Outer out = new Outer();
                out.method(7);
                out.method(8);
        }

}

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
图片是 内部类和 匿名类的 互换,希望对你有帮助。

未命名.jpg (46.83 KB, 下载次数: 99)

未命名.jpg

点评

学习了!  发表于 2013-4-2 08:03

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
如果仍有问题,请继续追问,如果问题已解决,请将分类改为已解决,谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马