区分getName、getCanonicalName与getSimpleName
举例,现有一个类如下:
?
package com.shansun.seri.json;public class JsonSerialize implements Serialize {...public static class SerializerUnit4Map {}...}?分别调用标题中的三个方法得到后面的输出:
?
String canonicalName = SerializerUnit4Map.class.getCanonicalName();System.out.println(canonicalName);String name = SerializerUnit4Map.class.getName();System.out.println(name);String simpleName = SerializerUnit4Map.class.getSimpleName();System.out.println(simpleName);
?输出结果为:
?
com.shansun.seri.json.JsonSerialize.SerializerUnit4Mapcom.shansun.seri.json.JsonSerialize$SerializerUnit4MapSerializerUnit4Map
其实getName、getCanonicalNam这两个方法没有什么不同的,对于大部分class来说,但是对于array或内部类等就显示出来了。
getName返回的是[[Ljava.lang.String之类的表现形式,而getCanonicalName返回的就是跟我们声明类似的形式。
BTW,在load class的时候需要的名字也是getName这种的名字。
?
?
?
哈哈