201671010127 2016-2017-12 泛型程序设计之集合类

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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);}
}

次试运行结果如下:

技术分享

此时结果顺利输出。






















































以上是关于201671010127 2016-2017-12 泛型程序设计之集合类的主要内容,如果未能解决你的问题,请参考以下文章

201671010127 2016-2017-8 初识异常处理

201671010127 2016—2017-2 接口与抽象类

201671010127 2016—2017—2 面向对象的基本概念

201671010127 2016—2017—2 Java学习周结

201671010127 2016-2017-11 从键盘读入中文字符串遇到的问题

201671010127 2016—2017-2 java编程中遇到的问题