完全限定名与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