六、泛型——1-泛型入门
1-泛型入门
1.编译时不检查类型的异常
情形如下:
import java.util.List; public class Test1 { public static void main(String[] args) { //未确定集合中的元素(未指定泛型) //这个集合用于保存字符串 List list = new ArrayList(); list.add("abc"); list.add("bcd"); //添加了一个Integer元素 list.add(3); //Lambda表达式遍历集合 list.forEach(str->System.out.println(((String)str).length())); //出现异常 } }
2.泛型的使用
(1)为了确保在编译时检查类型,而使用泛型;
(2)简单例子:
import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; public class Test2 { public static void main(String[] args) { //创建一个元素只能为String的list List<String> list = new ArrayList<String>(); //当向其中添加Integer时,报错 //list.add(1); //创建一个元素只能为String的set Set<String> set = new HashSet<String>(); //创建一个元素只能为<String,Integer>的map Map<String,Integer> map = new HashMap<String,Integer>(); } }
3.菱形语法
即在构造器后不需要携带完整的泛型信息,只需要“<>”即可:
import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; public class Test2 { public static void main(String[] args) { //创建一个元素只能为String的list List<String> list = new ArrayList<>(); //当向其中添加Integer时,报错 //list.add(1); //创建一个元素只能为String的set Set<String> set = new HashSet<>(); //创建一个元素只能为<String,Integer>的map Map<String,Integer> map = new HashMap<>(); } }