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

getClass()文档中的“删除表达式的静态类型”是什么意思?

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

getClass()文档中的“删除表达式的静态类型”是什么意思?

Java语言规范要求编译器以特殊方式处理此方法:

该方法

getClass
返回表示
Class
对象类的对象。

Class
每个引用类型都有一个对象。例如,它可以用于发现类的完全限定名称,其成员,其直接超类以及其实现的任何接口。

getClass的方法调用表达式的类型是

Class<? extends|T|>
where,其中
T
是为getClass搜索的类或接口(第15.12.1节)。

因此,getClass的返回类型

getClass()
是调用表达式的静态(编译时)类型。例如:

String s = "";Object o = s;Class<? extends String> sc = s.getClass(); // okClass<? extends Object> oc = o.getClass(); // okoc = sc; // oksc = o.getClass(); // not oksc = oc; // not ok

规范中对符号

|X|
的定义如下:

类型擦除是从类型(可能包括参数化类型和类型变量)到类型(从不参数化类型或类型变量)之间的映射。我们

|T|
为消除type而写
T
。擦除映射定义如下:

  • 参数化类型(第4.5节)的擦除

    G<T1,...,Tn>
    |G|

  • 嵌套类型的擦除

    T.C
    |T|.C

  • 删除数组类型

    T[]
    |T|[]

  • 擦除类型变量(第4.4节)是擦除其最左边界。

  • 其他所有类型的擦除都是该类型本身。

例如,如果我们有:

List<String> list = ...;

表达式

list.getClass()
是类型
Class<? extends List>
而不是类型
Class<? extendsList<String>>



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

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

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