zoukankan      html  css  js  c++  java
  • 201671010127 2016-2017-12 泛型程序设计之集合类

      在第十周的程序测试题中,有一个程序在运行时发生了异常,当时老师留下该问题让同学们自己查资料解决,我通过分析代码和查阅资料后找到了该类问题的解决方法,接下来就和大家分享我的经历。首先我先给出该程序源码如下:

      

    import java.util.Vector;
    //主类
    public class CatsAndDogs{
    public static void main(String[] args){
    Vector<Object> cats = new Vector<Object>();//初始化一个Vector类变量,变量名为cats
    for(int i=0; i<7; i++)
    cats.addElement(new Cat(i));//利用addElement方法向集合中添加元素
    cats.addElement(new Dog(7));
    for(int i=0; i<cats.size(); i++)
    ((Cat)cats.elementAt(i)).print();//通过强制类型转换输出集合中的元素
    }
    }
    //定义一个Cat类
    class Cat {
    private int catNumber;
    Cat(int i){catNumber = i;}
    void print(){System.out.println("Cat #"+catNumber);}
    }
    //定义一个Dog类
    class Dog {
    private int dogNumber;
    Dog(int i){dogNumber = i;}
    void print(){System.out.println("Dog #"+dogNumber);}
    }

    运行结果如下:

      通过仔细查看源代码,我发现原来问题是由于在添加第七个元素时添加的类型是Cat类型的,而在输出时转换成了Dog类,出现了强制类型转换失败,接下来我将代码做出如下修改:

    import java.util.Vector;
    //主类
    public class CatsAndDogs{
    public static void main(String[] args){
    Vector<Object> cats = new Vector<Object>();//初始化一个Vector类变量,变量名为cats
    for(int i=0; i<7; i++)
    cats.addElement(new Cat(i));//利用addElement方法向集合中添加元素
    cats.addElement(new Dog(7));
    for(int i=0; i<cats.size(); i++)
    {
    Object elem=cats.elementAt(i);
    if(elem instanceof Cat)
    ((Cat)cats.elementAt(i)).print();//通过强制类型转换输出集合中的元素
    else
    ((Dog)cats.elementAt(i)).print();

    }
    }
    }
    //定义一个Cat类
    class Cat {
    private int catNumber;
    Cat(int i){catNumber = i;}
    void print(){System.out.println("Cat #"+catNumber);}
    }
    //定义一个Dog类
    class Dog {
    private int dogNumber;
    Dog(int i){dogNumber = i;}
    void print(){System.out.println("Dog #"+dogNumber);}
    }

    次试运行结果如下:

    此时结果顺利输出。

  • 相关阅读:
    Windows下利用CMake和VS2013编译OpenCV
    eclipse下Android工程名称的修改方法
    Android SDK Android NDK Android Studio 官方下载地址
    OpenCV4Android编译
    转载---- 使用opencv源码自己编制android so库的过程
    在Linux的Eclipse下搭建Android环境
    ANDROID STUDIO 2.2.3 DOWNLOAD FROM DL.GOOGLE.COM
    Python 垃圾回收机制
    基于linux参数优化tcp三次握手与四次挥手
    推荐
  • 原文地址:https://www.cnblogs.com/nbq520/p/7819905.html
Copyright © 2011-2022 走看看