首页 > 代码库 > 泛型的上限和下限的Demo

泛型的上限和下限的Demo

Main Class

package Comparator.Bean;import java.math.BigDecimal;import java.util.List;import java.util.ArrayList;import java.util.Collection;import java.util.Iterator;/** * ? extends E : 接收E或者是E的子类对象。上限 * ? super E :接收E或者E的父类对象。下限 * @author asus * */public class ComparatorMain {    public static void main(String[] args) {        System.out.println("----------extends---------------");        List<People> peoples = new ArrayList<People>();        peoples.add(new People("Tom",22));        peoples.add(new People("Kitty",18));        peoples.add(new People("Marry",20));        printCollectionExtends(peoples);        List<Worker> workers = new ArrayList<Worker>();        workers.add(new Worker("Programmer", new BigDecimal(20000)));        workers.add(new Worker("teacher", new BigDecimal(6000)));        printCollectionExtends(workers);        List<String> strings = new ArrayList<String>();        strings.add("abc");        strings.add("efg");        strings.add("hij");;        //printCollection(strings);         System.out.println("----------super---------------");        printCollectionSuper(peoples);        List<Student> students = new ArrayList<Student>();        students.add(new Student(87, 96));        students.add(new Student(100, 100));        //printCollectionSuper(students);        List<Human> humans = new ArrayList<Human>();        humans.add(new Human("China", "1991-6-4"));        humans.add(new Human("US", "2000-6-4"));        printCollectionSuper(humans);        //printCollectionExtends(humans);    }        public static void printCollectionExtends(Collection<? extends People> collection){        Iterator<?> iterator = collection.iterator();        while (iterator.hasNext()) {            System.out.println(iterator.next().toString());        }    }        public static void printCollectionSuper(Collection<? super People> collection){        Iterator<?> iterator = collection.iterator();        while (iterator.hasNext()) {            System.out.println(iterator.next().toString());        }    }}

People class

package Comparator.Bean;public class People extends Human{    private String name;    private int age;    private Student student;    private Worker worker;        public People() {        super();    }    public People(String name, int age) {        this.name = name;        this.age = age;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    public Student getStudent() {        return student;    }    public void setStudent(Student student) {        this.student = student;    }    public Worker getWorker() {        return worker;    }    public void setWorker(Worker worker) {        this.worker = worker;    }        public String toString(){        return "name:"+name+";age:"+age;    }        }

Human class

package Comparator.Bean;public class Human {    private String country;    private String birthday;        public Human(){}        public Human(String country, String birthday) {        this.country = country;        this.birthday = birthday;    }    public String getCountry() {        return country;    }    public void setCountry(String country) {        this.country = country;    }    public String getBirthday() {        return birthday;    }    public void setBirthday(String birthday) {        this.birthday = birthday;    }        public String toString(){        return "country:"+country+"birthday:"+birthday;    }}

Worker class

package Comparator.Bean;import java.math.BigDecimal;public class Worker extends People{    private String occupation;    private BigDecimal salary;        public Worker(String occupation, BigDecimal salary) {        this.occupation = occupation;        this.salary = salary;    }    public String getOccupation() {        return occupation;    }    public void setOccupation(String occupation) {        this.occupation = occupation;    }    public BigDecimal getSalary() {        return salary;    }    public void setSalary(BigDecimal salary) {        this.salary = salary;    }    public String toString(){        return "Occupation:"+occupation+";salary:"+salary;    }}

Student class

package Comparator.Bean;public class Student extends People{    private int ChineseScores;    private int MathScores;        public Student(int chineseScores, int mathScores) {        ChineseScores = chineseScores;        MathScores = mathScores;    }    public int getChineseScores() {        return ChineseScores;    }    public void setChineseScores(int chineseScores) {        ChineseScores = chineseScores;    }    public int getMathScores() {        return MathScores;    }    public void setMathScores(int mathScores) {        MathScores = mathScores;    }    }

 

泛型的上限和下限的Demo