在Java中,使用反射的方法加载类的具体代码是:
Class<?> cls = Class.forName("package.ClassName");
但是,如果需要加载的是一个内部类的话,如果我们使用这种加载方式,会抛出异常:
// 如果使用这样的代码,会抛出ClassNotFoundException Class<?> cls = Class.forName("package.ClassName.InnerClass");
对于内部类,我们需要像下面这样写代码:
Class<?> cls = Class.forName("package.ClassName$InnerClass");
如果要创建内部类对象
需要在该类的构造函数的第一个参数传入外部类的一个对象,其余的参数按照该构造函数的参数列表一次加入
原因很简单创建一般内部类需要依附于一个外部类的对象