czcdms 2020-12-15 18:31 采纳率: 100%
浏览 19
已采纳

Java 如何反射修改一个对象的非基本类型成员里的成员

如class A { private int value = 20; } class B { private a : A = A();}

现在想通过B反射出A,且修改value的值。

  • 写回答

2条回答 默认 最新

  • weixin_74836531 2020-12-15 22:09
    关注


    class A
    {
       private int value = 20;
       
       public void printA()
       {
          System.out.println("A====="+getValue());
       }

       public int getValue()
       {
          return value;
       }

       public void setValue(int value)
       {
          this.value = value;
       } 
    }

     

    class B
    {

       public static void main(String[] args)
       {
          Class a1 = null;
          try
          {
             //通过Class类的一个forName(String className)静态方法返回一个Class对象,className必须是全路径名称;
             //我这里A和B类都放在默认的包下,所以不用填路径,一般要填类似 com.**.A 这样的
             a1 = Class.forName("A");
          }
          catch (ClassNotFoundException e)
          {
             e.printStackTrace();
          }
          try
          {
           //newInstance()方法 ---> 获取class类型之后,可以创建该类型的对象
             A myA = (A) a1.newInstance();
             //修改A中的a属性,其实是修改实例对象myA的a属性
             myA.setValue(30);
             //将a打印出来
             myA.printA();//A=====30
          }
          catch (Exception e)
          {
             e.printStackTrace();
          }

       }
    }

     

    运行B类,可以看到结果 :A=====30

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?