Java18-泛型的基础知识
泛型(Generic type 或者 generics)是对 Java 语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类。
可以把类型参数看作是使用参数化类型时指定的类型的一个占位符,就像方法的形式参数是运行时传递的值的占位符一样。
泛型接口: public interface Collection<E> extends Iterable<E>{..}
泛型类: public class Generic<T> { private T key; //key这个成员变量的类型为T,T的类型由外部指定 }
泛型方法: public void play( List<String> animal){...} public void test(List<?> list){...} public void play( List<? extends Animal> animal){...} public Generic(T key) { //泛型构造方法形参key的类型也为T,T的类型由外部指定 this.key = key;} 注意事项: 1.<> 尖括号里边 的参数类型是引用数据类型,不能是基本数据类型 2.类型参数用尖括号加任意字母表示 : <T>,字母一般为单个大写字母,并有一定含义, 例如 T(type),E(element),K(key),V(value) 等等 3.泛型通配符 ?
----------------------------------------------------------泛型实践--------------------------------------------------------
Student:
package factory.Student; public class Student { public Student(){ } //**********字段*************// public String name; protected int age; char sex; private String phoneNum; @Override public String toString() { return "Student [name=" + name + ", age=" + age + ", sex=" + sex + ", phoneNum=" + phoneNum + "]"; } }
test_0809:
public class test_0809 { public String name = "123"; }
泛型:
package doudou.fanxing; import java.util.ArrayList; import java.util.List; import doudou.test_0809; import factory.Student.Student; public class test_fanxing01 { private static final Object String = null; public static void main(String[] args) { test_fanxing01(); } public static void test_fanxing01() { List<? super Object> list = new ArrayList<>(); list.add(new String("123456789")); list.add(new Integer(111)); list.add(new Student()); list.add(new test_0809()); for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } } }
代码运行结果: