关于Enumeration学习中的一点小问题

lengyuqing523 2007-10-25 07:15:43
这段代码出自API的中

for (Enumeration e = v.elements() ; e.hasMoreElements() ;) {
System.out.println(e.nextElement());
}

不是说接口不能实例化对象的吗,那怎么能这样使用 Enumeration e
这个“e" 不是个实例化的对象吗. 还是我的理解有什么误区呢
那这个“e”具体该怎么解释呢~

还请高人指点~
...全文
188 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
YeLang2007 2007-10-25
  • 打赏
  • 举报
回复
楼上几位也都说了,如果你学过c或c++的话,你就把e理解为指针,或者理解为句柄.其实就是指向堆区的一个内存地址,但它本身是存放在栈区的一个内存地址.而上面的v.elements()可以理解为已被实例化的对象!
Javaphua 2007-10-25
  • 打赏
  • 举报
回复
“Enumeration e = v.elements()” 这里Enumeration e只是定义一个句柄指向实际实v.elements(),并非实列化。
fromtc 2007-10-25
  • 打赏
  • 举报
回复
“你要找一个对象,你就去问引用,对象在什么地方啊,引用就跟你说,我带你去吧.”
呵呵,好形象哦
yuyu622 2007-10-25
  • 打赏
  • 举报
回复
要说清楚,真的还不容易,表达能力不行.

比如说我们有一个对象Object(用new来实例化了的);当然在java里不能指接访问对象,我们如果要用Object就必须要知道Object在什么地方,这时应该怎么办呢?所以引用来了,引用也是Object类型的,但是它是一个普通的变量(不对的哈,只是为了理解,应该叫引用),它不是一个对象,除了内存地址,它什么也不存储.这里比如说你所说的Enumeration e,有e 就是一个引用了,而v.elements() 才是一个实例化了的对象,我们要用v.elements() 这个对象,所以当然要用一个引用去指向它,引用就相当于带路的,你要找一个对象,你就去问引用,对象在什么地方啊,引用就跟你说,我带你去吧.
yuyu622 2007-10-25
  • 打赏
  • 举报
回复
不是实例对象的抽象,在java里除了基本的数据类型如:int,float,double这类基本数据类型是直接用以外,其余的都是实例化的对象储存在内存堆中,并且都通过存储在堆栈中的引用去引用它,引用就是一个存储了对象内存地址的一个变量.并不关实例化的事.

在java里数据的存储分为了两个地方,一个是堆,一个是堆栈,对象存储在堆中,基本数据存储在堆栈中.不知道你有没有学过C,如果学过之类的语言,那么用指针来理解引用应该不难.
lengyuqing523 2007-10-25
  • 打赏
  • 举报
回复
也就是说 这个引用 也就 可以理解为 是 实例对象的抽象了~
yuyu622 2007-10-25
  • 打赏
  • 举报
回复
e不是实例化的对象,在java里Enumeration e这样只是定义一个引用,引用说白点就相当于c中的指针.并不是一个实例化的东西.而要new了才叫实例化.
lengyuqing523 2007-10-25
  • 打赏
  • 举报
回复
这些抽象的概念之间还真的是挺微妙的~思想上不去呢理解就真的是实在 有困难~ 楼上的几位朋友说的很好~领悟了
1楼的朋友比喻的实在是太形象了

62,623

社区成员

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

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