A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

TreeSet ts = new TreeSet();
这句是创建了一个对象
Iterator it = ts.iterator();
Iterator是一个接口,it = ts.iterator();这句就不理解了,接口型类型的数据么?还是什么。越想越糊涂啊 。

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

12 个回复

倒序浏览
接口类型的引用  这里有多台的成分  楼主好好看看API
回复 使用道具 举报
类 TreeSet<E>
java.lang.Object
  java.util.AbstractCollection<E>
      java.util.AbstractSet<E>
          java.util.TreeSet<E>
子类可以继承父类的方法。
TreeSet的父类AbstractCollection<E>中有一个抽象方法public abstract Iterator<E> iterator() 返回的是iterator接口。所以it = ts.iterator(); it 是接口类型的引用。
回复 使用道具 举报
it = ts.iterator();
ts对象里有一个方法iterator(),这个方法返回的是接口类型的地址,也就是引用。
回复 使用道具 举报
虽然很没看到那里,刚查了下API, ts.iterator();返回的是iterator类型对象。
接口类型指向子类对象应该很常见吧,所有实现接口的类所创建的对象也都可以成为那个接口类型的对象,多态的表现形式。
  1. interface Iterator111{
  2.         void show();
  3. }

  4. class Test{
  5.         public static void main(String[] args){
  6.                 Iterator111 it =getDemo();
  7.                 it.show();
  8.         }       
  9.        
  10.         static Iterator111 getDemo(){
  11.                 return new Iterator111(){
  12.                         public void show(){
  13.                                 System.out.println("aaaa");
  14.                         }
  15.                 };
  16.         }
  17. }
复制代码
回复 使用道具 举报
王硕' 发表于 2012-4-12 11:48
虽然很没看到那里,刚查了下API, ts.iterator();返回的是iterator类型对象。
接口类型指向子类对象应该很 ...

这句应该不是创建对象吧。3楼的是正解啊。返回了一个接口。
回复 使用道具 举报
这是接口类型里的一个方法:
具体用法:
iterator
public Iterator<E> iterator()返回对此 set 中的元素进行迭代的迭代器。元素以升序返回。

指定者:
接口 Iterable<E> 中的 iterator
指定者:
接口 Collection<E> 中的 iterator
指定者:
接口 Set<E> 中的 iterator
指定者:
类 AbstractCollection<E> 中的 iterator
返回:
对此 set 中的元素进行迭代的迭代器。
回复 使用道具 举报
耿世玉 发表于 2012-4-12 12:27
这句应该不是创建对象吧。3楼的是正解啊。返回了一个接口。

其实你就算这样理解下去,对你开发一点影响都就没有。
算我多说一句:Iterator it = ts.iterator();你觉得这句话执行完,it指向的是什么?
回复 使用道具 举报

Iterator是一个接口,it = ts.iterator();这句就不理解了,接口型类型的数据么?还是什么。越想越糊涂啊 。[/quote]
C:\Users\samsung\Pictures\捕获.PNG
Iterator it = ts.iterator();

刚刚查了API,iterator()方法返回的是一个迭代器,

[quote]Iterator it

而Iterabor就是一个对 collection 进行迭代的迭代器的接口


回复 使用道具 举报
iterator
Iterator<T> iterator()返回一个在一组 T 类型的元素上进行迭代的迭代器。

返回:
一个迭代器。
回复 使用道具 举报
只要把整个语句的各个部分了解清楚就很简单了,
先看这个语句:TreeSet ts = new TreeSet();,这里TreeSet ts是声明了一个TreeSet类型的引用变量ts,  new TreeSet()则是产生了一个TreeSet类的实例对象,TreeSet ts = new TreeSet();这句代码的功能就是把引用变量ts指向new TreeSet()产生的实例对象。
再来说说这个引用变量,我们还可以用TreeSet的父类的引用变量去指向这个产生的实例对象。这个引用变量还可以是一个接口,前提是这个TreeSet类必须实现了该接口,或者是实现了该接口的子类。

再来看Iterator it = ts.iterator();      Iterator it是定义了一个接口类型的引用变量,而ts.iterator()则是返回一个实现了Iterator接口的类的实例对象。希望对你有帮助。
回复 使用道具 举报
王硕' 发表于 2012-4-12 13:22
其实你就算这样理解下去,对你开发一点影响都就没有。
算我多说一句:Iterator it = ts.iterator();你觉 ...

谢谢啊。呵呵。
回复 使用道具 举报
返回的应该是 实现了 Iterable几口的匿名内部内!这里应用的应该是多态
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马