首页 > 其他 > 详细

getName、getCanonicalName、getSimpleName的区别

时间:2020-01-13 10:28:38      阅读:137      评论:0      收藏:0      [点我收藏+]

普通类---------------------------

getName: cn.lay.GetNameDemo
getSimpleName: GetNameDemo
getCanonicalName: cn.lay.GetNameDemo

普通类型的getName和getCanonicalName是没有区别的,getSimpleName没有包名


数组---------------------------

getName: [Lcn.lay.GetNameDemo;
getSimpleName: GetNameDemo[]
getCanonicalName: cn.lay.GetNameDemo[]

数组类型的getName返回的是虚拟机的表示方式,而getCanonicalName返回的是适用于人阅读的表示方式


内部类---------------------------

getName: cn.lay.GetNameDemo$A
getSimpleName: A
getCanonicalName: cn.lay.GetNameDemo.A

内部类的getName是$作为分割符号,getCanonicalName是用 . 作为分隔符


匿名内部类---------------------------

getName: cn.lay.GetNameDemo$$Lambda$4/282432134
getSimpleName: GetNameDemo$$Lambda$4/282432134
getCanonicalName: cn.lay.GetNameDemo$$Lambda$4/282432134

匿名内部类getCanonicalName使用了和getName一样的表达方式


基本类型数组---------------------------

getName: [I
getSimpleName: int[]
getCanonicalName: int[]

基本类型的数组没有包名,getName返回虚拟机表示方式,getCanonicalName返回人阅读的方式

 

简单来说,getName与虚拟机表达方式相关,而getCanonicalName与人的阅读习惯相关,getSimpleName去除包名

getName、getCanonicalName、getSimpleName的区别

原文:https://www.cnblogs.com/lay2017/p/12185959.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!