类
package com.example;
public class Outer{
public Outer() {
System.out.println("调用外部类构造方法");
}
public class Inner{
public Inner() {
System.out.println("调用内部类构造方法");
}
public void innerMethod() {
System.out.println("调用内部类普通方法");
}
}
}
调用
在getDeclaredConstructor()获取构造方法时,需要加上Outer.class作为参数,在构造实例时也要加上Outer的对象作为参数。
final Class<?> outerClass = Class.forName("com.example.Outer$Inner");
final Object o = outerClass.getDeclaredConstructor(new Class[] {com.example.Outer.class}).newInstance(new Outer());
System.out.println(o);
outerClass.getMethod("innerMethod").invoke(o);
结果
调用外部类构造方法
调用内部类构造方法
com.example.Outer$Inner@43b45ce4
调用内部类普通方法