package cn.hp.demo02; import java.util.ArrayList; import java.util.List; /*泛型*/ public class Demo02 { public static void main(String[] args) { //不指定泛型 List list1 = new ArrayList<>(); //list1.add(new demo02()); list1.add(new Cat()); list1.add(new Cat()); list1.add(new Cat()); Cat o =(Cat) list1.get(0);//获取元素时,返回的都是对象Object类型 o.say(); //指定泛型 List<Cat> list2 = new ArrayList<>(); list2.add(new Cat()); list2.add(new Cat()); list2.add(new Cat()); Cat cat = list2.get(0); cat.say(); } } class Cat{ public void say(){ System.out.println("喵喵~~"); } }
-----------------------------------------------------------------------------------------------------------------
package cn.hp.demo03; import java.util.ArrayList; import java.util.List; /* * * 人类 * 有宠物*/ public class Test { public static void main(String[] args) { //创建宠物 Dog dog = new Dog(); Cat cat = new Cat(); //创建人类,不指定宠物的泛型 Person p1 = new Person(); p1.pet=dog; p1.pet=cat; p1.pet="";//由于没有指定泛型,所以什么都可以指定,但是字符串不是宠物 //创建人类,不指定宠物的泛型 Person<Dog> p2 = new Person<>();//p2只可以领养狗 p2.pet = dog; //p2.pet = cat;不能保存猫,只能保存狗 Person<Cat> p3 = new Person<>();//p3只可以领养狗 p3.pet = cat; //对比List集合 List<Dog> list = new ArrayList<>(); } } class Person<T>{//T表示未定义的类型,使用类的时候传什么类型,T就代表什么类型 T pet;//T类型的宠物 } class Dog{ } class Cat{ }