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

© 进击的蜗牛 中级黑马   /  2015-7-5 18:56  /  212 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文



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);
        }
}

您需要登录后才可以回帖 登录 | 加入黑马