android - 泛型擦除 就是因为java泛型是在编译期有效的?这样理解可以吗?

查看:136
本文介绍了android - 泛型擦除 就是因为java泛型是在编译期有效的?这样理解可以吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

泛型擦除 就是因为java泛型是在编译期有效的?这样理解可以吗?
而在运行时是没有泛型的说法的,所以List<String>.classList<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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆