完全限定名与CanonicalName的区别

编程

完全限定名(Fully Qualified Names)

可以理解为:包名+类名。

  • 每个基本类型(primitive type),命名包,顶级类和顶级接口都有一个完全限定的名称。
  • 每个成员类,成员接口和数组类型都可能具有完全限定的名称。

    • 当且仅当数组类型的元素类型具有全限定名时,才具有全限定名。
    • 当且仅当C具有完全限定名称时,另一个类或接口C的成员类或成员接口M才具有完全限定名称。

  • 局部类(local class)没有完全限定的名称。定义在方法体中的类

例子:

| -- | 完全限定名 |

|----|----|

| long类型| long |

| java.lang 包名| java.lang |

| Object 类| java.lang.Object |

| Enumeration 接口| java.util.Enumeration |

| double数组| double[] |

| array of array of array of array of String| java.lang.String[][][][] |

Canonical Names 规范名

  • 每个原始类型,命名包,顶级类和顶级接口都有一个规范名称。并且与完全限定名一样
  • 每个成员类,成员接口和数组类型都可以具有规范名称
  • 局部类没有规范名称。

完全限定名 与 Canonical Name的区别

区别在于:

package p;

class O1 { class L {} }

class O2 extends O1 {}

p.O1.Lp.O2.L都是L类的完全限定类名, p.O1.L 才是 canonical name

因此可以理解为,是一个包含与被包含的关系。Canonical Name 必定是完全限定名。完全限定名则不一定是Canonical Name。

Fully Qualified Names and Canonical Names

以上是 完全限定名与CanonicalName的区别 的全部内容, 来源链接: utcz.com/z/514655.html

回到顶部