/*
* getName / getCanonicalName
* 对于array或内部类来说是有区别的.其他没区别。
*
* 类加载(虚拟机加载)的时候需要类的名字是getName。
*
* 参考:Java的getCanonicalName和getName
* https://blog.youkuaiyun.com/hustzw07/article/details/71108945
* */
public class Test {
public static void main(String[] args) {
testclassName1();
testclassName2();
testclassName3();
}
public static void testclassName1() {
System.out.println();
System.out.println("方法 值");
System.out.println("getName " + ExternalClass.class.getName());
System.out.println("getCanonicalName " + ExternalClass.class.getCanonicalName());
System.out.println("getSimpleName " + ExternalClass.class.getSimpleName());
System.out.println("getName " + ExternalClass.InternalClass.class.getName());
System.out.println("getCanonicalName " + ExternalClass.InternalClass.class.getCanonicalName());
System.out.println("getSimpleName " + ExternalClass.InternalClass.class.getSimpleName());
System.out.println();
}
// 方法 值
// getName xq.ExternalClass
// getCanonicalName xq.ExternalClass
// getSimpleName ExternalClass
// getName xq.ExternalClass$InternalClass
// getCanonicalName xq.ExternalClass.InternalClass
// getSimpleName InternalClass
public static void testclassName2() {
String[] ss = new String[]{
"zw", "zz"
};
System.out.println();
System.out.println("方法 值");
System.out.println("getName " + ss.getClass().getName());
System.out.println("getCanonicalName " + ss.getClass().getCanonicalName());
System.out.println("getSimpleName " + ss.getClass().getSimpleName());
System.out.println();
}
// 方法 值
// getName [Ljava.lang.String;
// getCanonicalName java.lang.String[]
// getSimpleName String[]
//‘[’ 表示数组,一个代表一维数组,比如 '[[' 代表二维数组。
// 'L' 代表类描述符,最后分号表示结束。
// 这种编码叫做JNI字段描述符(JavaNative Interface FieldDescriptors)。
public static void testclassName3() {
String[][] ss = new String[][]{
{"zw", "zz"}
};
System.out.println();
System.out.println("方法 值");
System.out.println("getName " + ss.getClass().getName());
System.out.println("getCanonicalName " + ss.getClass().getCanonicalName());
System.out.println("getSimpleName " + ss.getClass().getSimpleName());
System.out.println();
}
// 方法 值
// getName [[Ljava.lang.String;
// getCanonicalName java.lang.String[][]
// getSimpleName String[][]
//‘[’ 表示数组,一个代表一维数组,比如 '[[' 代表二维数组。
// 'L' 代表类描述符,最后分号表示结束。
// 这种编码叫做JNI字段描述符(JavaNative Interface FieldDescriptors)。
}
getName getSimpleName getCanonicalName区别
最新推荐文章于 2025-02-11 14:59:37 发布