转载请注明来自:黄朝辉的博客
1. 测试
//primitive
System.out.println(int.class.getName());
System.out.println(int.class.getCanonicalName());
System.out.println(int.class.getSimpleName());
System.out.println();
//class
System.out.println(String.class.getName());
System.out.println(String.class.getCanonicalName());
System.out.println(String.class.getSimpleName());
System.out.println();
//inner class
System.out.println(HashMap.SimpleEntry.class.getName());
System.out.println(HashMap.SimpleEntry.class.getCanonicalName());
System.out.println(HashMap.SimpleEntry.class.getSimpleName());
System.out.println();
//anonymous inner class
System.out.println(new Serializable(){}.getClass().getName());
System.out.println(new Serializable(){}.getClass().getCanonicalName());
System.out.println(new Serializable(){}.getClass().getSimpleName());
2.打印结果
int
int
int
java.lang.String
java.lang.String
String
java.util.AbstractMap$SimpleEntry
java.util.AbstractMap.SimpleEntry
SimpleEntry
ClassnameTest$1
null
最后一行是一个空行,因为getSimpleName返回了一个空string。
3.结论
- name :name是用来动态加载类的,比如调用
Class.forName来使用默认的ClassLoader。 - canonical name:用来导入和唯一的标识一个类。当调用
toString或者记日志时很有用。 - simple name:就是一个简简单单的名字,不一定唯一。
本文通过实例演示了Java中不同类型(如基本类型、类、内部类及匿名内部类)的getName(), getCanonicalName()和getSimpleName()方法的区别。这些方法分别用于获取类的全名、规范名和简单名。
5万+

被折叠的 条评论
为什么被折叠?



