新手问题

evaporater 2003-04-03 11:05:32
撰写了一个Cats容器(使用ArrayList),令它只能接受、取出Cat对象。
//////////////////////////////////////////////////////////////
//Cat.java
package mylib;

public class Cat {
private int catNumber;
public Cat(int i) { catNumber = i; }
public void print() {
System.out.println("Cat #" + catNumber);
}
}

//Dog.java
//为了检验程序是否只能接受Cat而创建的
package mylib;

public class Dog {
private int dogNumber;
public Dog(int i) { dogNumber = i; }
public void print() {
System.out.println("Dog #" + dogNumber);
}
}

//CatAndDogs.java
import java.util.*;
import mylib.*;

public class CatAndDogs {
static class Cats extends ArrayList {
public void add(Cat c) {
super.add(c);
}
public Object get(int index) {
return super.get(index);
}
public int size() {
return super.size();
}
}

public static void main(String[] args) {
Cats cats = new Cats();
for(int i = 0; i < 7; i++)
cats.add(new Cat(i));
for (int i = 0; i < 3; i++)
cats.add(new Dog(i)); //为什么add()会运行正常?
for (int i = 0; i < cats.size(); i++)
((Cat)cats.get(i)).print();
}
}

请问大家应该怎样写才能达到题目中的要求?
...全文
44 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
evaporater 2003-04-04
  • 打赏
  • 举报
回复
got it! 谢谢helpall()!

to moumouren(某某人) 这里用到泛型技术了吗?我不是太清楚。v1.4好象增加了,v1.3我还没看到,我用的是v1.3。谢谢
moumouren 2003-04-04
  • 打赏
  • 举报
回复
觉得楼上方法2比方法1好

还是请楼主关注java的泛形技术
helpall 2003-04-04
  • 打赏
  • 举报
回复
You did not overwrite ArrayList.add(Object). Dog is an Object, so...
Solution
1. add
public void add(Object o) {
if( !(o instanceof Cat) )
...
else
...
}

or:
2. change
class Cats {
Arraylist list = new Arraylist;
public void add(Cat cat) {
...
}
}

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧