先说getSimpleName()和其他两个的区别
MathDemo mathDemo = new MathDemo();
String simpleName = mathDemo.getClass().getSimpleName();
System.out.println(simpleName);
String name = mathDemo.getClass().getName();
System.out.println(name);
String canonicalName = mathDemo.getClass().getCanonicalName();
System.out.println(canonicalName);
结果
发现getSimpleName()返回的只是类名
而其他两个返回的全路径+类名
那么其他两个又有什么区别呢?
声明一个内部类
protected static class User{
private String name ;
}
User user = new User();
String canonicalName1 = user.getClass().getCanonicalName();
System.out.println(canonicalName1);
String name1 = user.getClass().getName();
System.out.println(name1);
运行后
getCanonicalName()返回的是更容易理解的表示
getName()返回的是虚拟机里面的class的表示
对于普通类没有区别,对于内部类和数组类才会有区别。