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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郑传庆 中级黑马   /  2012-6-17 22:04  /  1516 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 郑传庆 于 2012-6-17 22:57 编辑

在问题1那里为什么不能把SetProperty 里面带有s的字符串换成a ,是不是我chang()方法里面的步骤写错了还是方法用错了?我要实现的是如:
String str ="ssksshopsszxss"------>运行chang()方法后String str ="aakaahopaazxaa"。就是把s全变成a。求解析..

    public class SetProperty {
            private int x;
            public int y;
            String str ="ssksshopsszxss";
            String str1 ="ssdvbwswssyy";
            public SetProperty(int x, int y) {
                    super();
                    this.x = x;
                    this.y = y;
            }
             @Override
           public String toString() {
                   return str+" : "+str1;
          }

    }


    import java.lang.reflect.Field;
   
    class TestReplace {// 测试
           private String s = "true";// 这里同包所以用private测试可通过,property更没问题了吧
           public static void main(String[] args) throws Exception {
                  SetProperty s = new SetProperty(2, 5);
                  Field fs = s.getClass().getField("y");
                  System.out.println(fs.get(s));
                  Field f = s.getClass().getDeclaredField("x");
                  f.setAccessible(true);
                  System.out.println(f.get(s));
                  chang(s);
                  System.out.println(s);
           }
          private static void chang(Object obj) throws Exception {
                  Field[] f = obj.getClass().getFields();
                  for (Field field : f) {
                          // 字节码比较用等号,不是字节码才用equals()              
                         if (fi.getType() == String.class) {
                                  String value1 = (String) field .get(obj);
                                  String newvalue = value1.replace('s', 'a');//--------问题1
                                  System.out.println("---" + newvalue);
                                 field .set(obj, newvalue);
                    }
            }
}
}

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

4 个回复

倒序浏览
new value--中间是不是带了空格?
回复 使用道具 举报
潘东升 发表于 2012-6-17 22:07
new value--中间是不是带了空格?

不是,是发表的时候不小心打了个空格。我代码跟这个一个样,就是得不到想要的结果
回复 使用道具 举报
调试了半天终于找到原因了,就是权限的问题。
看了半天代码问题没有,想到权限就试验了一下.
String str ="ssksshopsszxss";
String str1 ="ssdvbwswssyy";
这两个前面都加上public就可以了,但是原因不是很明白,希望高手给解释一下原因。

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
薄炳鑫 发表于 2012-6-17 22:54
调试了半天终于找到原因了,就是权限的问题。
看了半天代码问题没有,想到权限就试验了一下.
String str = ...

兄弟,谢谢你的提醒哈。我怎么就忘了去调试权限呢?:dizzy:
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马