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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 白磊 中级黑马   /  2013-5-13 09:02  /  1047 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 白磊 于 2013-5-13 12:33 编辑

import java.io.*;
import java.util.*;

class Java {

        public static void main(String[] args) {
                Person p = new Person("唐明雨");
                ArrayList <Person>li = new ArrayList<Person>();
                li.add(p);
                Iterator it = li.iterator();
                while (it.hasNext()) {
                        Person p1 =  it.next();                  //为什么我上面已经使用过反省了,  it.next()返回的类型就应该是Person类型了,
                                                                   //  可是这一句怎么还是会报错,要求强转呢
                        System.out.println(p1.getName());
                }
        }
}

class Person {

        String name;

        public String getName() {
                return name;
        }

        public Person(String name) {
                this.name = name;
        }
}

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

4 个回复

倒序浏览
这个你得在迭代器上也得搞泛型,不然的话到迭代器里还是object,迭代出来还得转型。所以代码修改如下:
import java.io.*;
import java.util.*;

class Java {

        public static void main(String[] args) {
                Person p = new Person("唐明雨");
                ArrayList <Person>li = new ArrayList<Person>();
                li.add(p);
                Iterator <Person> it = li.iterator();
                while (it.hasNext()) {
                        Person p1 =  it.next();                  
                        System.out.println(p1.getName());
                }
        }
}

class Person {

        String name;

        public String getName() {
                return name;
        }

        public Person(String name) {
                this.name = name;
        }
}

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

回复 使用道具 举报
迭代器上也要使用泛型。
回复 使用道具 举报
import java.io.*;
import java.util.*;

class Java {

        public static void main(String[] args) {
                Person p = new Person("唐明雨");
                ArrayList <Person>li = new ArrayList<Person>();
                li.add(p);
                Iterator<Person> it = li.iterator();   //迭代器上面也要搞泛型的   不搞泛型 下面要判断强转的  不然是有安全隐患
                while (it.hasNext()) {
                        Person p1 =  it.next();                  //为什么我上面已经使用过反省了,  it.next()返回的类型就应该是Person类型了,
                                                                   //  可是这一句怎么还是会报错,要求强转呢
                        System.out.println(p1.getName());
                }
        }
}

class Person {

        String name;

        public String getName() {
                return name;
        }

        public Person(String name) {
                this.name = name;
        }
}
回复 使用道具 举报
楼上正确了,就是这一句的问题,没什么好说的 Iterator<Person> it = li.iterator();
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马