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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 贾旭 于 2012-3-21 23:56 编辑

  1. package cn.itcast.day1;
  2. import java.lang.reflect.*;
  3. public class Demo {
  4. public static void main(String[] args) throws Exception{  
  5.    ReflectPoint pt1=new ReflectPoint();
  6.    show(pt1);
  7.    System.out.println(pt1);
  8. }
  9. public static  void show(Object ob) throws Exception{
  10.       Field[] fields = ob.getClass().getFields();
  11.       for(Field field:fields){
  12.        if(field.getType()==String.class){
  13.         String oldValue=(String)field.get(ob);
  14.         String newValue=oldValue.replace('b', 'c');
  15.         field.set(ob,newValue);        
  16.        }
  17.       }
  18. }
  19. }

  20. 这是ReflectPoint类
  21. package cn.itcast.day1;
  22. public class ReflectPoint {
  23. String st1="bbb";
  24. String st2="bbaa";
  25. String st3="bbbdd";
  26. public String toString(){
  27. return st1+"::"+st2+"::"+st3;
  28. }  
  29. }

复制代码
结果总是:bbb::bbaa::bbbdd
但是我目的是让它把b改成C啊。
谢谢各位帮忙了。

评分

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

查看全部评分

5 个回复

正序浏览
啊啊……我知道哪里的问题了。原来我的
        public String st1="bbb";
        public String st2="bbaa";
        public String st3="bbbdd";
都是默认的protected权限。访问都访问不到,还怎么修改啊。晕死了。
灰常感谢楼上的几位啊,谢谢!

评分

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

查看全部评分

回复 使用道具 举报
♂诸侯♂ 发表于 2012-3-21 23:51
我当时按照代码做的时候成功的了。你调试一下。按照视屏张老师讲的调试方法。调试一下。应该是哪里写错。还 ...

谢谢提醒怎么贴代码,我还以为大家用什么厉害的编辑器呢,剪切过来就成这样了。呵呵:D

评分

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

查看全部评分

回复 使用道具 举报
知道原因吗? 因为getFields()是访问Class对象所表示的类或接口的所有可访问公共字段,而你的ReflectPoint类里头的属性是无控制符的,默认是Default,所以就得用getDeclaredFields();,当然你也可以把你的ReflectPoint类里头的属性改成public的,那就getFields()就可以。

点评

谢谢啊  发表于 2012-3-22 00:03

评分

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

查看全部评分

回复 使用道具 举报
我当时按照代码做的时候成功的了。你调试一下。按照视屏张老师讲的调试方法。调试一下。应该是哪里写错。还有贴代码的时候。有对尖括号可以贴代码。那样易读还不容易出错。

点评

还有一个小问题,怎样关闭问题啊。  发表于 2012-3-22 00:03
回复 使用道具 举报
Field[] fields = ob.getClass().getFields();改为 Field[] fields = ob.getClass().getDeclaredFields();

点评

谢谢啊  发表于 2012-3-22 00:03

评分

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

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马