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

网络公司网站赏析网站广告投放价格表

网络公司网站赏析,网站广告投放价格表,亚洲av成人片无码网站在线观看,做网站需要什么技术支持回答重点 泛型擦除指的是Java编译器在编译时将所有泛型信息删除的过程,以确保与Java1.4及之前的版本保持兼容 泛型参数在运行时会被替换为其上界(通常是Object),这样一来在运行时无法获取泛型的实际类型。 作用:泛型…

回答重点

泛型擦除指的是Java编译器在编译时将所有泛型信息删除的过程,以确保与Java1.4及之前的版本保持兼容

泛型参数在运行时会被替换为其上界(通常是Object),这样一来在运行时无法获取泛型的实际类型。

作用:泛型擦除确保了Java代码的向下兼容性,即可以与旧版本的Java代码兼容,为了让使用泛型的代码在不同版本的Java运行时环境中都可以正常工作。又由于泛型类型信息在编译时期被擦除了,因此运行时无法获取泛型信息,这样就不能创建泛型类型的数组或对泛型类型使用instanceof检查

示例:

public <T> void printList(List<T> list) {for (T element : list) {System.out.println(element);}
}

编译后的代码类似于:

public void printList(List list) {for (Object element : list) {System.out.println(element);}
}

类型T会被擦除成Object

扩展知识

为什么Java泛型的实现是类型擦除?

回答重点提到了主要原因是为了向下兼容,即兼容Java5之前编译的class文件。

例如Java1.2上正在跑的代码,可以在Java1.5上的JRE上运行

也是因为需要向下兼容,才使得Java实现的是伪泛型

我从现有的实现倒推伪泛型的设计可能思路(个人瞎掰的,做个参考即可)

是这样的:

  1. 这Java5以前的版本在线上已经有很多应用在跑了,如果我的Java5不能兼容,没人用啊
  2. 泛型毕竟是加一个约束,以前的代码没有这个约束啊,该如何兼容?
  3. 有了,要不我在编译器上动手动脚,在编译的时候识别和约束泛型,然后编译过了就把泛型的信息擦除了。这样运行的时候就没有约束了,跟之前的版本就没什么区别了。

参考网上的解释:

这说明,写Java的也是程序员,也是要发版有上线需求的

为什么运行期通过反射可以获得类型?

public class GenericTest {public static void main(String[] args) {List<String> list = new ArrayList<>();list.add("hello");String s = list.get(0);}
}

看字节码 

从反编译看生成的字节码文件能看到,new的List没有保存泛型,所以是被擦除了

下面有一步checkcast强转为String,可是Java代码中不需要写强转呢?

因为编译器隐形的帮我们插入了强转的代码所以不需要我们写

再看标题:既然擦除了类型,为什么运行期还能通过反射获取类型?

答案就藏在class文件中

看下面代码:

获取泛型类型

public class GenericTest {public List<String> list;public static void main(String[] args) throws Exception{Field field = GenericTest.class.getField("list");Type type = ((ParameterizedType) field.getGenericType()).getActualTypeArguments()[0];System.out.println(type);}
}

javap -v,可以看到字节码里记录了泛型类型信息,所以编译器虽然擦除了泛型类型,也记录了泛型信息,自然能通过反射获取

由于静态记录在了字节码中,所以局部变量这种存在栈中的泛型类型,通过反射就无法获取

只有三种情况可以通过反射获取泛型类型:

  • 成员变量的泛型
  • 方法入参的泛型
  • 方法返回值的泛型
  • 类的泛型

http://www.15wanjia.com/news/12064.html

相关文章:

  • 企业做网页还是网站怎么样建网站
  • wordpress 文章付费查看宁波seo推广哪家好
  • 使用joomla的网站百度搜索引擎怎么弄
  • 政府网站建设 强化考评问责外贸营销推广
  • 最新大连市热议新闻seo首页优化
  • 在微信上做彩票网站吗做一个私人网站需要多少钱
  • 网站建设案列培训心得体会100字
  • 网站做防篡改seo常用优化技巧
  • 浏阳网站制作公司互联网广告价格
  • 自建网站免费教程网站推广和优化系统
  • 做网站的分工西安网站搭建公司
  • 建设电影推荐网站的项目背景企业网站
  • 中山金舜家庭用品有限公司怎样网站地图抖音seo搜索引擎优化
  • 做网站之前需要准备什么软件线上销售的方法和技巧
  • 免费怎么制作公司网站最近的电脑培训学校
  • 北京市政府部门网站建设百度框架户一级代理商
  • 山东网站开发推广广告赚钱软件
  • 沈阳做网站客户多吗cps推广接单平台
  • 如何做一个自己的公众号seo外链收录
  • 阜新住房建设委员会网站想要推广网页
  • 中国生态文明建设的意义和目标北京网站seo设计
  • 湖州企业网站制作百度竞价ocpc
  • cms做企业网站中国十大广告公司排行榜
  • 上海企业网站建设报模板免费网站建设
  • 开发和发布网站的主要流程今天热点新闻事件
  • 网站建设优化制作公司百度竞价点击软件
  • 兰州网站开发企业软文撰写
  • 如何自己建设简单的手机网站淘客推广怎么做
  • 做网站最下面写什么如何使用网络营销策略
  • 订单查询网站怎么做搜索引擎营销包括