iterator的next()方法的一点小问题

来源:3-7 添加和显示信息

慕先生6309556

2021-08-08 19:07:37

public static void main(String[] args) {
        Set t1=new HashSet();
        Cat one=new Cat(12,"英国短毛","花花");
        Cat two=new Cat(3,"中华田园","凡凡");
        t1.add(one);
        t1.add(two);
        Iterator it=t1.iterator();
        while(it.hasNext()) {
            //next()返回的是集合中的下一个元素,所以返回的类型是需要根据集合中的内容类型来决定的,如果集合中没有指定泛型,返回的就是Object类型的
            //此刻调用的相当于Object类的toString 方法
       System.out.println( it.next());
        }

老师我理解的it.next()返回的是一个Object类的对象,那么这个Object类对象:(1)能够强制转换成

Cat类嘛?(2)我还不理解,既然it.next()返回的是一个Object类的对象,你重写Cat类的toString方法没有用啊


写回答

1回答

好帮手慕小小

2021-08-09

同学你好

1、是可以强转为Cat类的。

2、next()方法的返回值类型是Object,但将其强转为Cat类型后,输出对应的对象,默认会调用Cat类的toString()方法。

Cat类重写的toString()方法:

http://img.mukewang.com/climg/61108be309140ebf07520093.jpg

测试代码如下:

Set t1=new HashSet();
Cat one=new Cat(12,"英国短毛","花花");
Cat two=new Cat(3,"中华田园","凡凡");
t1.add(one);
t1.add(two);
Iterator it=t1.iterator();
while(it.hasNext()) {
	Cat cat = (Cat)it.next();
	System.out.println(cat);//默认会调用Cat类的toString()方法
}

输出结果为:

http://img.mukewang.com/climg/61108c2a0945e88b03540056.jpg

祝学习愉快~


0

0 学习 · 16556 问题

查看课程