比如我写了一个类B继承于A,在配置文件中进行配置,利用反射进行创建对象,在程序中返回的都是父类A的引用,
现在我想操作子类B的私有属性,应该怎么做?

解决方案 »

  1.   

    既然是B的对象,那么你可以强制类型转换为B类的引用,就可以通过B的方法操作B类的私有属性啊。
      

  2.   

    比如:
    已知B继承于A,
    public A getA(){
         Class b = Class.forName("从文件中读取类A的子类B的名字");
         A a = b.newInstance();
         return a;
    }
    现在在程序中我要操作b类特有的属性和方法应该怎么做?
      

  3.   

    Class b = Class.forName("从文件中读取类A的子类B的名字");
    Field field = b.getDeclaredFields("你要的属性名");
    field.setAccessible(true);field.get(对象);field.set("对象",值);
      

  4.   

    那楼主你就麻烦点,先用getClass()获得运行时Class对象(即B类的Class对象),然后再用楼上的方法去获取你要的属性。还是反射。
      

  5.   

    如果A的引用是通过B向上转型得到的话,那么可以通过向下转型得到B的对象,这样就可以操作B的属性了。
    但是如果A的引用是实例化A得到的话,那就不能进行向下转型,也就没有办法操作B的属性了。
      

  6.   

    b.getClass().getMethods();
    b.getClass().getFields();