Class.getName和Class.getCanonicalName的区别

对于一般的type来说,这二者没有区别,对于array和inner type,就有区别了,可以写代码亲测,如下:

 package simple;

 class Box {
class Inner {}
} public class Foo {
public static void main(String[] args) throws Exception {
// Ordinary class:
System.out.println(Box.class.getCanonicalName());
System.out.println(Box.class.getName());
// Inner class:
System.out.println(Box.Inner.class.getCanonicalName());
System.out.println(Box.Inner.class.getName());
// Array type:
System.out.println(args.getClass().getCanonicalName());
System.out.println(args.getClass().getName());
}
}

一般,用于load class的时候,比如说Class.forName,就需要用Class.getName而不是Class.getCononicalName

上一篇:实验一:JAVA实验环境搭建 ,JDK下载与安装及 Eclipse下载与安装


下一篇:采用Filter的方法解决Servlet的编码问题