美文网首页
day15-12-集合框架(泛型限定)

day15-12-集合框架(泛型限定)

作者: 姗婷 | 来源:发表于2020-06-22 07:48 被阅读0次
    import java.util.*;
    
    /*
    ?通配符,也可以理解为占位符
    泛型的限定
    ? extends E:可以接收E类型或者E的子类型。上限。
    ? super E:可以接收E类型或者E父类型。下限。
    */
    
    class GenericDemo6 
    {
        public static void main(String[] args) 
        {
            /*
            ArrayList<String> al = new ArrayList<String>();
            al.add("abc1");
            al.add("abc2");
            al.add("abc3");
    
            ArrayList<Integer> al1 = new ArrayList<Integer>();
            al1.add(4);
            al1.add(7);
            al1.add(1);
    
            printColl(al);
            printColl(al1);
            */
    
            ArrayList<Person> al = new ArrayList<Person>();
            al.add(new Person("abc1"));
            al.add(new Person("abc2"));
            al.add(new Person("abc3"));
    
            //printColl(al);
            ArrayList<Student> al1 = new ArrayList<Student>();
            al1.add(new Student("abc--1"));
            al1.add(new Student("abc--2"));
            al1.add(new Student("abc--3"));
             printColl(al1);//ArryaList<Person> al = new ArrayList<Student>();error
        }
        
        public static void printColl(ArrayList<? extends Person> al)//能接收的是Person类型及Person子类型
        {
            Iterator<? extends Person> it = al.iterator();
            while(it.hasNext())
            {
                System.out.println(it.next().getName());
            }
        
        }
                
        /*
        //当有了?通配符之后,al和al1都可以传入
        public static void printColl(ArrayList<?> al)//ArrayList<String> al = new ArrayList<Integer>;左右两边类型不一致,错误
        {
            Iterator<?> it = al.iterator();
            while(it.hasNext())
            {
                System.out.println(it.next());
            }
            
        }
        */  
    }
    
    class Person
    {
        private  String name;
        Person(String name)
        {
            this.name  = name;
        }
        public String getName()
        {
            return name;
        }
    }
    class Student extends Person
    {
        private String name;
        Student(String name)
        {
            super(name);
        }
    }
    

    相关文章

      网友评论

          本文标题:day15-12-集合框架(泛型限定)

          本文链接:https://www.haomeiwen.com/subject/sobaxktx.html