黑马程序员技术交流社区

标题: 匿名内部类实例化Enumeration [打印本页]

作者: 刘文飞    时间: 2012-11-26 23:01
标题: 匿名内部类实例化Enumeration
本帖最后由 刘文飞 于 2012-11-28 21:30 编辑
  1. final Iterator<FileInputStream> it = al.iterator();
  2.                 //使用匿名内部类给不能直接创建对象的Enumeration进行实例化
  3.                 Enumeration<FileInputStream> en = new Enumeration<FileInputStream>()
  4.                 {
  5.                         public boolean hasMoreElements()
  6.                         {
  7.                                 return it.hasNext();
  8.                         }
  9.                         public FileInputStream nextElement()
  10.                         {
  11.                                 return it.next();
  12.                         }
  13.                 };
复制代码
有些弄不明白,这个匿名内部类怎么就可以创建Enumeration的对象了呢?

作者: 齐银春    时间: 2012-11-26 23:09
亲 Eumeration也在java.util包里啊  属于其父类,匿名内部类当让可以使用父类的东西了   它只是一个容器而已  在哪里都可以使用,只要正确
作者: 刘文飞    时间: 2012-11-26 23:22
齐银春 发表于 2012-11-26 23:09
亲 Eumeration也在java.util包里啊  属于其父类,匿名内部类当让可以使用父类的东西了   它只是一个容器而 ...

突然又想明白了,应该是隐形实现了Enumeration,然后复写了其中的两个方法。
————————————————————
突然又想不明白另外一回事了,Enumeration中的两个方法只是两个抽象方法,
en怎么可以直接调用呢。
Enumeration en = new Vector().elements();
en.hasMoreElements();

作者: 齐银春    时间: 2012-11-27 08:58
刘文飞 发表于 2012-11-26 23:22
突然又想明白了,应该是隐形实现了Enumeration,然后复写了其中的两个方法。
————————————— ...

抽象方法也可以继承调用啊 这个和在哪里用没关系 楼主多看看代码翻翻API迷惑也就会少了
作者: 刘文飞    时间: 2012-11-27 16:26
齐银春 发表于 2012-11-27 08:58
抽象方法也可以继承调用啊 这个和在哪里用没关系 楼主多看看代码翻翻API迷惑也就会少了 ...

Enumeration en = new Vector().elements();
en.hasMoreElements();
这里貌似不存在继承吧,实现之后是可以调用,但是这里貌是直接调用了,
因为elements方法返回的也是Enumeration类型。
作者: 齐银春    时间: 2012-11-27 16:42
刘文飞 发表于 2012-11-27 16:26
Enumeration en = new Vector().elements();
en.hasMoreElements();
这里貌似不存在继承吧,实现之后是可 ...

呵呵  初学者学多了我也迷惑了  以后大家多多交流
作者: 王阳    时间: 2012-11-28 20:27
为什么不行呢? 用一个匿名内部类实现了一个接口,很正常嘛




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2