Java关于由子类构造器生成的父类对象的反射问题
- 问题概括
- 一、案例准备
- 二、问题描述
问题概括
提示:这里我就不绕圈子直接描述:
Java中由子类构造器生成的父类的getclass.getName不是父类的类名而是子类的类名,因此不可以用子类构造器生成的父类对象获取Class类进行反射操作,而是直接用父类名
一、案例准备
1.准备了一个父类CouF
2.准备了一个继承父类CouF的子类Cou
二、问题描述
在测试类中新建一个由子类(Cou)构造器生成的父类对象couf,并调用getClass方法获取Class类再调用getName方法获取该对象的类名
而getName()返回的结果为Cou,说明该父类对象的类名为Cou而不是CouF
因此一定不能用对象.getClass.getDeclareMethod()获取对象的方法,否则会报错如下图所示
正确方法应该用父类的类名如下图所示