Java Class类中关于getName()的相关方法和成员变量如下
private transient String name; private native String getName0(); public String getName(){ String name = this.name; if(name == null) this.name = name = getName0(); return name;可以看到 getName()方法在此使用了小小的懒汉式单例模式,并且在内部是调用了本地方法getName0()
以字符串的形式返回此Class对象代表的(class, interface, array class, primitive, void)。
如果此class对象表示的引用类型不是一个数组类型,则返回此class表示的binary name,如:
Object.class.getName(); //output: java.lang.Object如果此class对象带表一个primitive类型或void,则以字符串的形式返回相应的java关键字, 如:
void.class.getName() //output: void boolean.class.getName() //output: boolean如果此类表示的是数组 ‘[‘的数量代表了数组的维度 Element Type被编码成以下格式:
Element TypeEncodingbooleanZbyteBcharCclass 或 interfaceLclassName;doubleDfloatfintIlongJshortS如:
Object[][].class.getName(); //output: [[Ljava.lang.Object int[][].class.getName(); //output: [[I另外Class.forName(clz.getName())可以获取相应数组的类实例, 如:
Class.forName("[[Ljava.lang.Object;")