黑马程序员技术交流社区

标题: 关于反射的例子 [打印本页]

作者: 冯超    时间: 2012-9-16 20:36
标题: 关于反射的例子
先贴上代码吧!
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');  新人求技术分哈哈
作者: 冯超    时间: 2012-9-16 22:43
OK  谢谢啦




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