黑马程序员技术交流社区

标题: 用反射为什么老是取不到String局部变量? [打印本页]

作者: 刘永建    时间: 2013-4-16 18:49
标题: 用反射为什么老是取不到String局部变量?
今天看了张老师的反射视频,但是自己动手做的时候总是取不到局部变量,请高手看一下错在哪里?
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);
     
   }
}

作者: wanggang    时间: 2013-4-16 19:32
将Field[] f =c.getFields();改成Field[] f=c.getDeclaredFields();  就可以了
作者: 黄玉昆    时间: 2013-4-18 20:19
如果问题未解决,请继续追问,如果问题解决了,请将问题分类改为“已解决”,谢谢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2