对于大部分类来说,这两个方法没有什么不同,但对于array来说,区别就显示出来了,Class.getName是 [Ljava.lang.String之类的表现形式,而getCanonicalName返回的就是跟我们声明类似的形式。在load class的时候,需要的也是getName这种的名字。在 hql的泛型查询,我们需要使用Class.getCanonicalName这种形式来获取对象名称拼接hql.