黑马程序员技术交流社区

标题: 泛型的问题 [打印本页]

作者: 进击的蜗牛    时间: 2015-7-5 18:56
标题: 泛型的问题


public class GenericDemo6 {

        /**
         * ? 是通配符。也可以理解为占位符。
泛型的限定:
? extends E:可以接收E类型或者E的子类型。上限。
? super E:可以接收E类型或者E的父类型。下限。
         */
        public static void main(String[] args) {
               
                ArrayList<Person> al = new ArrayList<Person>();
               
                al.add(new Person("abc1"));
                al.add(new Person("abc2"));
                al.add(new Person("abc3"));
               
                printColl(al);
               
                ArrayList<Student1> al1 = new ArrayList<Student1>();
               
                al1.add(new Student1("abc--1"));
                al1.add(new Student1("abc--2"));
                al1.add(new Student1("abc--3"));
                printColl(al1);/ /这个地方是错的吗 ?是等于这个吧  ArrayList<Person> al = new ArrayList<Student>();?
                               为什么运行出来了呢?
                               还有把输出的哈希值,变成输出字符串


               
        }
       
        public static void printColl(ArrayList<?extends Person>  al)
        {
                Iterator<?extends Person> it = al.iterator();
               
                while(it.hasNext())
                {
                        Person p = (Person)it.next();
                        System.out.println(p);
                }
        }

}


class Person
{
        private String name;
        Person(String name)
        {
                this.name = name;
        }
        public String getName()
        {
                return name;
        }

}

class Student1 extends Person
{
        Student1(String name)
        {
                super(name);
        }
}






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