android - 泛型擦除 就是因为java泛型是在编译期有效的?这样理解可以吗?
本文介绍了android - 泛型擦除 就是因为java泛型是在编译期有效的?这样理解可以吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
泛型擦除 就是因为java泛型是在编译期有效的?这样理解可以吗?
而在运行时是没有泛型的说法的,所以List<String>.class
和List<Integer>.class
其实都是List.class
请问大神这种理解方式有问题吗?
解决方案
基本正确。
泛型的作用就是在你编码的过程中(或者说编译)尽量避免类型转换错误,是为了规范编码。
List<String>理解为List<T>并且T=String
List<Integer>理解为List<T>并且T=Integer
以上是语义。
List<String> list = new ArrayList<String>();
list.add("caiyongji");
String x = list.get(0);
编译后:
List list = new ArrayList();
list.add("caiyongji");
String x = (String) list.get(0);
转换依然存在。
这篇关于android - 泛型擦除 就是因为java泛型是在编译期有效的?这样理解可以吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文