Java中getName()、getCanonicalName()和getSimpleName()的异同

最简单的方法, 就是写个测试类测试一下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package com.getname.pkg;

public class Main {

public class Demo1 {
class Demo2 {
}
}

public static void main(String[] args) {
/* 三种方式获取普通类Main的名字 */
System.out.println("-----三种方式获取普通类的名字-----");
String name = Main.class.getName();
System.out.println("\t" + "getName()方法:" + name);

String canonicalname = Main.class.getCanonicalName();
System.out.println("getCanonicalName()方法:" + "\t" + canonicalname);

String simplename = Main.class.getSimpleName();
System.out.println("getSimpleName()方法:" + "\t" + simplename);

/* getName()和getCanonicalName()获取数组名比较 */
int[] aaa = { 1, 2, 3 };
System.out.println("\r\n" + "-----对于数组 int[]-----");
name = aaa.getClass().getName();
System.out.println("\t" + "getName()方法:" + name);

canonicalname = aaa.getClass().getCanonicalName();
System.out.println("getCanonicalName()方法:" + "\t" + canonicalname);

/* getName()和getCanonicalName()获取内部类名比较 */
System.out.println("\r\n" + "-----对于内部类-----");
name = Demo1.Demo2.class.getName();
System.out.println("\t" + "getName()方法:" + name);

canonicalname = Demo1.Demo2.class.getCanonicalName();
System.out.println("getCanonicalName()方法:" + "\t" + canonicalname);
}
}

打印结果为:

1
2
3
4
5
6
7
8
9
10
11
12
-----三种方式获取普通类的名字-----
getName()方法:com.getname.pkg.Main
getCanonicalName()方法: com.getname.pkg.Main
getSimpleName()方法: Main

-----对于数组 int[]-----
getName()方法:[I
getCanonicalName()方法: int[]

-----对于内部类-----
getName()方法:com.getname.pkg.Main$Demo1$Demo2
getCanonicalName()方法: com.getname.pkg.Main.Demo1.Demo2

本帖附件

点击下载

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

0%