30-泛型

package generics; import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class GenericsDemo1 { public static void main(String[] args){ // 创建对象 // 不写泛型,默认为Object类型,可以存储任意类型的数据 // 格式:集合类 对象名 = new 集合类(); ArrayList list1 = new ArrayList(); list1.add("abc"); list1.add(1); list1.add(true); System.out.println(list1); // 迭代器不适用泛型 System.out.println("=================迭代器遍历(不使用泛型)=================="); Iterator it1 = list1.iterator(); while(it1.hasNext()){ // 取出的元素是Object类型 Object obj = it1.next(); System.out.println(obj); } // 泛型只能是引用类型,不能是基本类型 // 格式:集合类<泛型> 对象名 = new 集合类<泛型>(); ArrayList<String> list2 = new ArrayList<String>(); list2.add("张三"); list2.add("李四"); list2.add("王五"); System.out.println(list2); // 迭代器使用泛型 System.out.println("=================迭代器遍历(使用泛型)=================="); Iterator<String> it2 = list2.iterator(); while(it2.hasNext()){ // 取出的元素是String类型 String s = it2.next(); System.out.println(s); } } }

泛型类
常见的泛型标识符:E、T、K、V
1)E:Element 元素
2)T:Type 类型
3)K:Key 键
4)V:Value 值
package generics; /* * 常见的泛型标识符:E、T、K、V * E:Element 元素 * T:Type 类型 * K:Key 键 * V:Value 值 * * 清楚不同的泛型,在什么时机确定到具体的类型 * * 泛型类的使用场景,创建对象的时候 * * */ public class GenericsDemo2 { public static void main(String[] args){ Student<String> stu = new Student<>("张三", "23"); System.out.println(stu.getName() + "," + stu.getAge()); } } class Student<E>{ private E name; private E age; public E getName() { return name; } public void setName(E name) { this.name = name; } public E getAge() { return age; } public void setAge(E age) { this.age = age; } public Student(E name, E age){ this.name = name; this.age = age; } }

泛型方法
泛型接口
泛型通配符
泛型的限定