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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 冯超 高级黑马   /  2012-9-16 20:36  /  1500 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

先贴上代码吧!
import java.lang.reflect.Field;




public class flect {

        /**
         * @param args
         * @throws IllegalAccessException
         * @throws IllegalArgumentException
         */
        public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException {
                test t = new test();
                changChar(t);
            System.out.println(t);
        }
       
        private static void changChar(Object obj) throws IllegalArgumentException, IllegalAccessException
        {
                Field[]  fie = obj.getClass().getFields();                 //obj.getClass()得到属于他的字节码      obj.getClass().getFields()得到所属的字段
                for(Field f: fie)
                {
                    if(f.getType() == String.class)  //f.getType()得到字段所属的类型
                    {
                            String strValue = (String)f.get(obj);
                            String newStr = strValue.replace('b', 'X');
                            f.set(obj, newStr);
                    }
                }
               
        }
       

}

class test
{
        String str1 = "basketball";  //字符串1
        String str2 = "itcast";      //字符串2
        String str3 = "debug";      //字符串3


        public String toString()   //1.在System.out.println()或System.out.print()里写一个对象时。
                                   //2.在用+连接一个对象和一个字符串时。   只有这两种情况会自动调用toString()方法
        {
                return str1 + "\n" + str2 + "\n" + str3;
        }
}
运行之后反射没成功,不知道为什么! 另外求人帮我用正则改写这个替换的代码:String newStr = strValue.replace('b', 'X');  新人求技术分哈哈

评分

参与人数 1技术分 +1 收起 理由
王德升 + 1 赞一个!

查看全部评分

2 个回复

倒序浏览
OK  谢谢啦
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马