• getName、getCanonicalName、getSimpleName的区别


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

    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去除包名

  • 相关阅读:
    分组密码之DES
    QTreeWidget实现一个打包小工具
    实验吧web记录
    南邮CTF记录
    XSS学习之xss20
    安全之路的一些参考
    sqlilabs_Less2128
    sqlilabs_Less110
    BUGKU练习
    看了几天的EXTJS了
  • 原文地址:https://www.cnblogs.com/lay2017/p/12185959.html
Copyright © 2020-2023  润新知