当前位置: 首页 > wzjs >正文

南京市工程建设交易中心网站关键词快速排名软件价格

南京市工程建设交易中心网站,关键词快速排名软件价格,找做网站公司经验,做移动网站优化首泛型 泛型泛型数组与泛型容器如何解决擦除导致的类型丢失 泛型 我们接着上面一篇文章继续聊泛型&#xff0c;如果没有看过的&#xff0c;欢迎阅读thinking in java - 泛型1 泛型数组与泛型容器 先看一段代码&#xff1a; public class ArrayMaker<T> {private Class&…

泛型

  • 泛型
    • 泛型数组与泛型容器
    • 如何解决擦除导致的类型丢失

泛型

我们接着上面一篇文章继续聊泛型,如果没有看过的,欢迎阅读thinking in java - 泛型1

泛型数组与泛型容器

先看一段代码:

public class ArrayMaker<T> {private Class<T> kind;public ArrayMaker(Class<T> kind) {this.kind = kind;}T[] creat(int size) {return (T[]) Array.newInstance(kind, size);}public static void main(String[] args) {ArrayMaker<String> arrayMaker = new ArrayMaker<>(String.class);String[] strings = arrayMaker.creat(10);System.out.println(Arrays.toString(strings));}
}

输出结果:

[null, null, null, null, null, null, null, null, null, null]

这段代码的点在于Array.newInstance(kind, size);为啥我们传入了Class类型,还有要创建的size,这个方法还是给我们返回了Object,还需要我们使用强制类型转换?

  1. 类型擦除的限制
    Java的泛型在编译后会被擦除为Object或边界类型(如Comparable)。虽然ArrayMaker的kind参数通过Class保留了类型信息,但Array.newInstance的返回类型设计为Object,因为它需要支持所有可能的componentType(如String.class、Integer.class等),无法在编译时静态绑定到具体类型。

  2. 数组的协变性
    Java数组是协变的(如String[]可视为Object[]),但泛型是不变的(如List不能视为List)。当通过反射创建数组时,返回的实际类型(如String[])在运行时是明确的,但编译器无法验证其与泛型类型T[]的兼容性,因此需要显式强制转换。

  3. 安全性责任转移给开发者
    Array.newInstance的设计要求开发者通过Class参数确保类型安全。例如,若传入String.class,则返回的数组实际类型是String[],但编译器无法自动推断这一点。开发者需通过强制转换(T[])告知编译器这一安全操作,并自行保证kind与T的一致性。

泛型容器

public class ListMaker<T> {List<T> create() {return new ArrayList<>();}public static void main(String[] args) {ListMaker<String> stringListMaker = new ListMaker<>();List<String> list = stringListMaker.create();}
}

如何解决擦除导致的类型丢失

其实泛型,本身就是为了,让我们的代码能够处理多个类,让代码更加具有泛化能力。既然是跨多个类,那么实际上,我们就无法得知,运行时具体传入的是哪种类型,类型在编译期间就被擦除掉了。

那么如何解决这个问题呢? 那就是再额外把类型的Class对象传入进来。

http://www.dtcms.com/wzjs/484627.html

相关文章:

  • 自建网站做网上超市可行吗网络营销的重要性
  • wordpress菜单高级应用开封网站seo
  • 总算把网站设计好了公司市场营销策划方案
  • 建设125摩托车价格及图片采集站seo赚钱辅导班
  • 公司网站建设制度精准获客
  • 房产网站建设网络推广专员是干什么的
  • 大连网站开发师营销公关
  • 网站怎么做h5支付宝支付接口网络营销渠道名词解释
  • 网站后台管理器怎么做soe搜索优化
  • 网站建设公司兴田德润电话怎么提交网址让百度收录
  • 阳区城市规划建设局网站google官网入口下载
  • 就是做网站的.....济南seo外贸网站建设
  • 江苏省建设银行网站沈阳seo关键字优化
  • 百度seo点击器seo168小视频
  • 宿州保洁公司哪家好奉化首页的关键词优化
  • 泉州做网站优化价格国内新闻最新
  • 网站加载慢宁波seo搜索引擎优化公司
  • 长沙网页制作设计无锡seo公司找哪家好
  • 网站 域名解析错误天津seo关键词排名优化
  • 如何建设优化一个网站快手seo
  • 电子商务设计网站建设网络推广有几种方法
  • 广开街网站建设公司外国人b站
  • 想接网站自己做搜索引擎优化百度
  • 伦教网站设计今日的最新消息
  • app网站开发价格网络seo排名
  • 苏州网站优化爱站网关键词工具
  • 股票查询网站模板 wordpress营销的三个基本概念是什么
  • 邯郸最穷的三个县刷神马seo排名首页排名
  • 集团做网站需要多大的带宽seo引擎
  • 郑州高端网站建设潍坊百度快速排名优化