完全限定名与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.L 和 p.O2.L都是L类的完全限定类名, p.O1.L 才是 canonical name。
因此可以理解为,是一个包含与被包含的关系。Canonical Name 必定是完全限定名。完全限定名则不一定是Canonical Name。
Fully Qualified Names and Canonical Names
以上是 完全限定名与CanonicalName的区别 的全部内容, 来源链接: utcz.com/z/514655.html
