Java中Class类中的getName和getTypeName区别
平时用的是jdk1.8练习,这个getTypeName是1.8之后加入的方法。我测试了我现在练习的例子感觉不到区别。有没有大哥说说区别举例说明下?...
平时用的是jdk1.8练习,这个getTypeName是1.8之后加入的方法。我测试了我现在练习的例子感觉不到区别。有没有大哥说说区别举例说明下?
展开
展开全部
举例,现有一个类如下:
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);
输出结果为:
com.shansun.seri.json.JsonSerialize.SerializerUnit4Map
com.shansun.seri.json.JsonSerialize$SerializerUnit4Map
其实getName、getCanonicalNam这两个方法没有什么不同的,对于大部分class来说,但是对于array或内部类等就显示出来了。
getName返回的是[[Ljava.lang.String之类的表现形式,而getCanonicalName返回的就是跟我们声明类似的形式。
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);
输出结果为:
com.shansun.seri.json.JsonSerialize.SerializerUnit4Map
com.shansun.seri.json.JsonSerialize$SerializerUnit4Map
其实getName、getCanonicalNam这两个方法没有什么不同的,对于大部分class来说,但是对于array或内部类等就显示出来了。
getName返回的是[[Ljava.lang.String之类的表现形式,而getCanonicalName返回的就是跟我们声明类似的形式。
追问
我问的是getTypeName兄弟。
2020-09-14
展开全部
“首先先判断其是否为数组则对象,如不是则直接返回 getName() 方法获得的值,如果是则通过循环判断是否为数组对象,最终得到表示数组类型的类,然后追加 “[]”,返回其字符串形式”
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询