package com.dejun.javaproject; /** * Author:DoctorWei * Time:2018/10/29 17:05 * Description:泛型 * email:1348172474@qq.com */ /** * * @param <E>此处的E指的就是泛型可以理解为Object类型,即是任意类型,为了限制年龄为整数 * @param <F>此处的E指的就是泛型可以理解为Object类型,即是任意类型,限制名字为字符串 */ public class Dog<E,F> { private E age; private F name; public Dog(E age, F name) { this.age = age; this.name = name; } public E getAge() { return age; } public void setAge(E age) { this.age = age; } public F getName() { return name; } public void setName(F name) { this.name = name; } @Override public String toString() { return "Dog{" + "age=" + age + ", name=" + name + '}'; } }
package com.dejun.javaproject; /** * 在androidstudio上运行java小程序 * 1.构建javaLibrary * 2.编写main方法 * 3.配置运行类 */ import java.util.ArrayList; import java.util.List; /** * 泛型:可变的参数类型 * 我们都知道可以向集合中放置元素,但是元素的类型有限制,很容易出现ClassCastException * 那有没有办法像集合一样中放置任意类型,然后取出对应类型呢,这就衍生出了泛型 */ public class MyClass { public static void main(String[] args){ listDemo(); Dog<Integer,String> dog=new Dog(1,"小辉");//泛型可以在编译时就指定类型 //dog.setAge("小红");//这样就可以限制传入的年龄只能只整数 System.out.println("name="+dog.getName()); System.out.println("age="+dog.getAge()); } private static void listDemo() { List datas=new ArrayList<>(); for (int i=0;i<10;i++){ datas.add("张三"); datas.add(2); } String name = (String) datas.get(0);//此处很容易出现ClassCastException System.out.println("name="+name); } }