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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 宋美成 于 2014-5-15 12:27 编辑

定义了一个函数是为了实现将字符串型的成员变量里的“b”改成“a”
具体代码如下:不知道怎么回事,就是实现不了功能,程序没有报错
  1. class getPoint
  2. {
  3.            String str1="abbbb";
  4.            String str2="abbbc";
  5.         
  6.         @Override
  7.         public String toString()
  8.         {
  9.            return str1+"+"+str2;
  10.          }
  11. }

  12. public class ReflectDemo
  13. {
  14.         public static void main(String[] args)throws Exception
  15.          {
  16.                getPoint od= new getPoint();
  17.                changeStringValue(od);
  18.                System.out.println(od);
  19.                  
  20.           }
  21.          private static void changeStringValue(Object obj)throws Exception
  22.          {
  23.                   Field[] fields =obj.getClass().getFields();
  24.                   for(Field field: fields)
  25.                   {
  26.                             if(field.getType()==String.class)//只对字符串类的成员变量有效
  27.                             {
  28.                                   String oldValue =(String)field.get(obj);//获取obj里的成员变量
  29.                                   String newValue =oldValue.replace('b', 'a');
  30.                                   field.set(obj,newValue);
  31.                              }
  32.                    }
  33.             }

  34. }
复制代码



5 个回复

倒序浏览
下面是正确的代码,看我给你写的注释,主要问题出现getPoint这类里
你的str1和str2属性权限的问题,修改为public就可以了,
public class ReflectDemo {

        /**
         * @param args
         * @throws Exception
         */
        public static void main(String[] args) throws Exception {
                  getPoint od= new getPoint();
          changeStringValue(od);
          System.out.println(od);

        }
       
    private static void changeStringValue(Object obj)throws Exception
    {
             Field[] fields =obj.getClass().getFields();
             for(Field field: fields)
             {
                       if(field.getType()==String.class)//只对字符串类的成员变量有效
                       {
                             String oldValue =(String)field.get(obj);//获取obj里的成员变量
                             String newValue =oldValue.replace('b', 'a');
                             field.set(obj,newValue);
                        }
              }
       }


}

class getPoint
{
        //正确代码
        public String str1="abbbb";
        public String str2="abbbc";
        //错误的代码
        // String str1="abbbb";
        // String str2="abbbc";
        
        @Override
        public String toString()
        {
           return str1+"+"+str2;
         }
}

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报 1 0
jsjchenlong 发表于 2014-5-15 08:38
下面是正确的代码,看我给你写的注释,主要问题出现getPoint这类里
你的str1和str2属性权限的问题,修改为p ...

恩,谢谢啦
回复 使用道具 举报

不客气。。。。。。。。
回复 使用道具 举报
看看 但不会啊
回复 使用道具 举报

很简单啦,学了就会拉,加油
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马