前言
今天笔者在获取一个类中的私有内部类实例的时候,用(获取外部类->获取内部类->构建内部类构造器->内部类构造器实例化)思路时,发现行不通,最后发现解决办法是在获取内部类的构造器时(无论有参或无参)都要在参数列表中加上外部类.class ,下面我用错误与正确例子对比加深大家的理解
提示:以下是本篇文章正文内容,下面案例可供参考
一、案例准备
准备了一个外部类Yest,以及内部类A,包括有参构造函数,无参构造函数和普通方法。
二、错误示例
错误原因解析:
在构建内部类构造器时没有外部类的实例,解决方法是在该参数列表中加上外部类.class的形参
三、正确示例
总结
由于成员内部类的对象的创建依赖于外部类对象,持有指向外部类对象的引用,所有在反射构造成员内部类的时候一定要获取构造器再调用构造器的newInstance方法,其中必须要传入外部类的Class和实例.