标签:基本 color ast 创建 class 子类 https 强制转换 默认
一般在创建对象时,将未知的类型确定具体的类型。当没有指定泛型时,默认类型为Object类型,我们在获取这个类型的时候拿到的也是Object,虽然可以进行强制转换,但是可能会发生类型转换异常java.lang.ClassCastException运行时异常,比如:
public static void main(String[] args) { // method1(); Map<String, Object> map = new HashMap<>(); map.put("key1", "123"); map.put("key2", 456); System.out.println((String) map.get("key1"));//123 System.out.println((String) map.get("key2"));//java.lang.ClassCastException }
这样在我们取map的值时,必须一一对应使用正确的类型来进行强转,很容易就会出错,但是如果用泛型就可以将异常提前在编译期就暴露出来,比如:
public static void main(String[] args) { // method1(); // method2(); Map<String, String> map = new HashMap<>(); map.put("key1", "123"); map.put("key2", 456);//编译不通过 System.out.println((String) map.get("key1")); System.out.println((String) map.get("key2")); }
总结就是将运行时期的ClassCastException,转移到了编译时期变成了编译失败。 避免了类型强转的麻烦。
当然这只是最基本的用法,先来说下泛型一共有多少种用法,以及使用的格式
其中含有泛型的接口有两种情况:(泛型类好像也可以)
public MyTest implements Test<String>
public MyTest<T> implements Test<T>
当使用泛型类或者接口时,传递的数据中,泛型类型不确定,可以通过通配符<?>表示。但是一旦使用泛型的通配 符后,只能使用Object类中的共性方法,集合中元素自身方法无法使用。
泛型的上限:
泛型的下限:
引用下大佬的文章:https://blog.csdn.net/s10461/article/details/53941091
标签:基本 color ast 创建 class 子类 https 强制转换 默认
原文地址:https://www.cnblogs.com/chenglei0718/p/11408911.html