栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Java中,为什么在运行时没有通用类型信息?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Java中,为什么在运行时没有通用类型信息?

问题在于,泛型并不总是出现在java中(我认为他们在1.5中添加了泛型)。因此,为了能够实现向后兼容性,提供了类型擦除功能,该功能可以在编译代码以实现该目标的同时有效地擦除通用类型信息。

摘自官方文件的相关部分:

在类型擦除过程中,Java编译器将擦除所有类型参数,如果类型参数是有界的,则将每个参数替换为其第一个边界;如果类型参数是无界的,则将其替换为对象。

所以这段代码例如

public class Node<T extends Comparable<T>> {    private T data;    private Node<T> next;    public Node(T data, Node<T> next) {        this.data = data;        this.next = next;    }    public T getData() { return data; }    // ...}

在类型擦除后变为:

public class Node {    private Comparable data;    private Node next;    public Node(Comparable data, Node next) {        this.data = data;        this.next = next;    }    public Comparable getData() { return data; }    // ...}

但是,如果您沿着反射的路径前进,就像 光剑
一样,有一种方法可以复活其中一些类型的信息:既强大又危险。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/498222.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号