关于反射和动态绑定的问题 比如我写了一个类B继承于A,在配置文件中进行配置,利用反射进行创建对象,在程序中返回的都是父类A的引用,现在我想操作子类B的私有属性,应该怎么做? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 既然是B的对象,那么你可以强制类型转换为B类的引用,就可以通过B的方法操作B类的私有属性啊。 比如:已知B继承于A,public A getA(){ Class b = Class.forName("从文件中读取类A的子类B的名字"); A a = b.newInstance(); return a;}现在在程序中我要操作b类特有的属性和方法应该怎么做? Class b = Class.forName("从文件中读取类A的子类B的名字");Field field = b.getDeclaredFields("你要的属性名");field.setAccessible(true);field.get(对象);field.set("对象",值); 那楼主你就麻烦点,先用getClass()获得运行时Class对象(即B类的Class对象),然后再用楼上的方法去获取你要的属性。还是反射。 如果A的引用是通过B向上转型得到的话,那么可以通过向下转型得到B的对象,这样就可以操作B的属性了。但是如果A的引用是实例化A得到的话,那就不能进行向下转型,也就没有办法操作B的属性了。 b.getClass().getMethods();b.getClass().getFields(); tag问题 一道Java题,不明白其选项 access和sql的语句一样吗? JTextArea.setCaretPosition()方法的应用问题? 大侠们 帮我解释下 尤其是for循环里的 高手能做出这道题来吗?在线等! 怎么有错误?请解答一下。 关于核心JAVA 查询数据库时,数据没有找到抛什么异常? 自学head first java 35页习题输入后跑不出来 求高手帮看看 看到那个4棵树的问题,我也来一个 关于this.setToolTipText("当前编号为"); 问题
已知B继承于A,
public A getA(){
Class b = Class.forName("从文件中读取类A的子类B的名字");
A a = b.newInstance();
return a;
}
现在在程序中我要操作b类特有的属性和方法应该怎么做?
Field field = b.getDeclaredFields("你要的属性名");
field.setAccessible(true);field.get(对象);field.set("对象",值);
但是如果A的引用是实例化A得到的话,那就不能进行向下转型,也就没有办法操作B的属性了。
b.getClass().getFields();