由于还要做别的工作,只能有时间了才学习学习,前学后忘了,
下面这段程序中Enumeration en = v.elements();这句的知识点不太明白了,谁帮我讲解一下,非常感谢
Enumeration 是个接口,为什么直接像赋值一样呢?多态的应用不是要加new 对象的吗?import java.util.Enumeration;
import java.util.Vector;
public class VectorDemo { /**
 * @param args
 */
public static void main(String[] args) {

Vector v = new Vector();
v.addElement("abc1");
v.addElement("abc2");
v.addElement("abc3");
v.addElement("abc4");

Enumeration en = v.elements();
while(en.hasMoreElements()){
System.out.println(en.nextElement());
       }


}

解决方案 »

  1.   

    接口是不能new的,但是可以申明引用啊。兄弟,你这java还没入门啊。 v.elements();这个方法会返回一个Enumeration类的子类对象的引用。然后把这个引用赋值给en
      

  2.   

    http://zhidao.baidu.com/question/273237933.html
    参照下
      

  3.   


    import java.util.ArrayList;
    import java.util.Collection;
    public class CollectionDemo { /**
     * @param args
     */
    public static void main(String[] args) {
    Collection coll = new ArrayList();
    Collection c1 = new ArrayList();
    Collection c2 = new ArrayList();
    //show(coll);
    show(c1,c2);


    }接口是不能new的,那么这个Collection coll = new ArrayList();中Collection 是接口,为什么可以用new?是当类多态的应用吗?见笑了!!!!
      

  4.   

    Collection是接口,ArrayList是实现了Collection的类,所以ArrayList是可以实例化的,也就是可以new的,但是接口不可以,Collection coll = new ArrayList();这里面存在一个向上向下转型的问题,一个父类(或接口类型)的引用可以指向它的子类(或实现类),但在通过这个引用调用方法时,会自动按照子类对象去处理,可能不太严谨,大概就是这个意思,还请大神们指正!
      

  5.   

    楼主,我觉得这里有些概念混淆了。
    1.“=”这个操作符是赋值操作符。对于对象使用这个操作符就是把引用赋给左边的变量。
    2. new 操作符是创建一个新的对象的实例。在你的问题中,elements()方法返回 Enumeration 类型的引用。然后用‘=’ 赋值给左边对象。
    所以和new没有关系。还有一点,实现接口的子类和接口是同种类型的。所以用"="操作符是可以的。
    不知道这样解释,楼主明白否?
      

  6.   

    new 接口或者抽象类(){      重写方法
    }
    这个东西楼主记得嘛  都是类似的东西
      

  7.   

    Enumeration instanceof  v.elements()返回的类型,如果能匹配肯定是可以赋值的哈