A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

今天看了张老师的反射视频,但是自己动手做的时候总是取不到局部变量,请高手看一下错在哪里?
public class Test2
{
   public int a ;
   public int b;
   String s1 = "basketball";
   String s2 = "ball";
   
   public Test2(int a , int b)
   {
      this.a = a;
      this.b = b;
   }
   public String toString()
   {
      return s1 +";"+ s2;
   }

}
package com.jianjian;
import java.lang.reflect.Field;
public class Test3
{
   public static void main(String[] args) throws Exception
   {
      Test2 test = new Test2(3,5);
      Class c = test .getClass();
      //首先筛出所有的成员变量
      Field[] f = c.getFields();
      for(Field  field : f)
      {
        if(field.getType() == String.class)
        {
           String str = (String)field.get(test);   
           String newStr = str.replace('b','a');
           System.out.println(newStr);
           field.set(test,newStr);
        
        }
          
      }
      System.out.println(test);
     
   }
}

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

2 个回复

倒序浏览
将Field[] f =c.getFields();改成Field[] f=c.getDeclaredFields();  就可以了

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
如果问题未解决,请继续追问,如果问题解决了,请将问题分类改为“已解决”,谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马