一般使用哪种迭代器,有能进行类型内部分析的吗?

Yanbin_Q 2003-10-20 05:43:11
//Test.java

import java.util.*;

//抽象基类
abstract class O{
public void draw(){
}
}

class B extends O{
public void draw(){
System.out.println("this is B");
}
}

class C extends O{
public void draw(){
System.out.println("this is C");
}
}

public class Inter{

public static void main(String[] args){
Vector v=new Vector();
v.add(new B());
v.add(new C());

((B)(v.get(0))).draw();//这样类型强制转换是可以的

//能不能改造一下替换如下的形式,真正的实现动态绑定
//让迭代器内部分配具体的对象类型
//或者是应该用别的什么迭代器
//用数组可以,但是数组的大小是确定的
//v.get(0).draw();
}
}

再比如也就是像数组那样
O o=new {new B(),new C()};
//这里就会调用B的方法draw()了
o[0].draw(); //this is B
//这里就会调用C的方法draw()了
o[1].draw(); //this is C
...全文
76 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Yanbin_Q 2003-10-29
  • 打赏
  • 举报
回复
看了《java与模式》才知道,原来一直搞错了,以为聚集就是迭代器,现在才清楚,聚集就是聚集,迭代器就是迭代器,聚集是存储数据用的,迭代器是提供遍历用的,当时现在一般的聚集本身就提供的遍历方法。
不过还是发现了java和C++ STL的迭代器有很大不一样的地方。
whyxx 2003-10-20
  • 打赏
  • 举报
回复
class XXX {
Vector aaa= new Vector();
public void add(O temp) {
aaa.add(temp);
}
public O get(int i){
aaa.get(i);
}
}
其他方法类推,这样,你的程序中就可以这样用了.
public class Inter{

public static void main(String[] args){
XXX v=new XXX ();
v.add(new B());
v.add(new C());
v.get(0).draw();
v.get(1).draw();

62,614

社区成员

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

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