黑马程序员技术交流社区

标题: 泛型 [打印本页]

作者: 白磊    时间: 2013-5-13 09:02
标题: 泛型
本帖最后由 白磊 于 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;
        }
}
作者: 黑马华    时间: 2013-5-13 09:41
这个你得在迭代器上也得搞泛型,不然的话到迭代器里还是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;
        }
}
作者: 飞鸟青崖    时间: 2013-5-13 09:54
迭代器上也要使用泛型。
作者: 花开花落总相似    时间: 2013-5-13 10:11
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;
        }
}
作者: 罗海清    时间: 2013-5-13 10:15
楼上正确了,就是这一句的问题,没什么好说的 Iterator<Person> it = li.iterator();




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2