黑马程序员_反射

来源:互联网 发布:淘宝卖家代理怎么发货 编辑:程序博客网 时间:2024/06/01 22:27

---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----------------------


我学习java很喜欢研究各种名字的由来,因为这样感觉会学得更透彻。反射之所以成为反射,按我的理解,因为它使用类去操作类,即使用本身去操作本身,在操作过程中,把目标类当作对象,把操作类的方法又封装成了类。读起来有点拗口,就像照镜子般看到的仍然是我,因此称为反射。

反射的出现很好的扩展了java的使用性。把类当作对象也体现了java万物皆对象的原则。一般情况反射出现在设计框架的情况比较多。

利用反射来把对象中的字符串中的a字母全部替换为b.

 

package Test;

 

import java.lang.reflect.Field;

 

public class reflectReplace {

      

       publicstatic void main(String[] args) throws Exception{

              //建立反射对象

              reflectPointrp=new reflectPoint();

              System.out.println(rp);

              //对对象进行替换(把字符串中的a替换成b)

              ChangeStringValue(rp);

              System.out.println(rp);

       }

       //创造替换方法

       privatestatic void ChangeStringValue(Object obj) throws Exception{

              //获取反射点的成员

              Field[]fields= obj.getClass().getFields();

              //对反射点成员进行循环替换

              for(Fieldfield:fields){

                     //当成员是字符串时进行替换

                     if(field.getType()==String.class){

                            //获取字符串成员,并强转为字符串类型

                            Stringold= (String)field.get(obj);

                            //替换字符

                            StringnewString= old.replace('a', 'b');

                            //将旧字符串设定为新的字符串

                            field.set(obj,newString);

                     }

              }

             

       }

 

}

 

package Test;

//建立反射类

public class reflectPoint {

 

       publicString str1="aaabbb";

       publicString str2="aaabbb";

       publicString str3="aaabbb";

      

       publicreflectPoint(){

              super();

       }

//重载toString方法

@Override    

       publicString toString(){

       returnstr1+"...."+str2+"...."+str3;

             

       }

 

}


---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----------------------


0 0
原创粉丝点击