黑马程序员_反射
来源:互联网 发布:淘宝卖家代理怎么发货 编辑:程序博客网 时间: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>、期待与您交流! ----------------------
- 黑马程序员_反射
- 黑马程序员_反射
- 黑马程序员_反射
- 黑马程序员_反射
- 黑马程序员_反射
- 黑马程序员_反射
- 黑马程序员_反射
- 黑马程序员_反射
- 黑马程序员_反射
- 黑马程序员_反射
- 黑马程序员_反射
- 黑马程序员_反射
- 黑马程序员_反射
- 黑马程序员_反射
- 黑马程序员_反射
- 黑马程序员_反射
- 黑马程序员_反射
- 黑马程序员_反射
- Invalid location of tag 解决办法分析
- 【足迹C++primer】58、Template Parameter
- 判断两条线段/直线相交,并求交点
- linux下无线网卡驱动的解决
- C语言之static
- 黑马程序员_反射
- C语言 回调函数的使用:(实例对比)
- sizeof运算符
- 【足迹C++primer】59、模板左值右值的转换
- lightoj 二分题简要题解
- C语言之动态内存分配
- 13.1 Triangle
- 【足迹C++primer】60、重载和模板
- 指针与结构体、函数指针