基础加强篇之-----反射
来源:互联网 发布:powerdesigner mac版 编辑:程序博客网 时间:2024/06/05 08:04
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
1、通过反射得到String类中的charAt方法
String str1 = "abc";这边建立了一个字符串的对象
Method methodCharAt = String.class.getMethod("charAt", int.class);//通过反射的方式得到字节码里的方法System.out.println(methodCharAt.invoke(str1, 1));//调用str1的方法并传入参数//如果按照jdk1.4的语法来调用,由于还没有可变参数,因此一个参数要为数组System.out.println(methodCharAt.invoke(str1, new Object[]{2}));/** * new Object[]{2} 这句话的意思是有一个object类型的数组里面只有一个元素就是2 * */如以上代码所示,我通过反射的方式,获取了String类中的charAt方法,然后让str1这个对象去调用,结果,我就可以去到索引1代表的字符,至此,要引出一个张孝祥老师在视频中讲的很经典的一句话,反射,其实就是将一个类中的各种成分映射成为对应的java类
2、用反射的方式去替换另一个类中的字符串成员的字符
首先,我这边先给出我要用来反射的类,我的目的是为了将String类型的值中的b换成a
public class ReflectPoint {private int x;public int y;//快捷键生成的构造函数 Alt+Shift+S 然后选择 Constructor using fieldspublic ReflectPoint(int x, int y) {super();this.x = x;this.y = y;}/** 练习 把下面的字符串中有b的通通改成a * 方法在 ReflectTest类中 * */public String str1 = "ball";public String str2 = "basketball";public String str3 = "itcast";}我是我在学习的代码的基础上简化后的代码,没有提供对私有成员的get 和set方法,因为在本程序中是使用不到的
下面的就是我如何去使用反射,获取到ReflectPoint中的成员,然后找到String类型的成员,然后将成员的值进行替换
import java.lang.reflect.*;import java.util.Arrays;public class ReflectTest {public static void main(String[] args) throws Exception {ReflectPoint pt1 = new ReflectPoint(3, 5); changStringValue(pt1);//练习变b为a } private static void changStringValue(Object obj) throws Exception { Field[] fields = obj.getClass().getFields();//得到所有字段 //进行迭代 for(Field field : fields){ //这里是比较字节码用‘==’ 比 ,当然用equals也行但是显得不专业了 //这边的目的是先筛选出String类型的字节码对象 if(field.getType() == String.class){ //通过Field类的get方法获得指定的对象的成员的值 String oldValue = (String)field.get(obj); String newValue = oldValue.replace('b', 'a');//对每个进行替换 field.set(obj, newValue);//还要再把新的赋给它 } } } }
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
- 基础加强篇之-----反射
- 基础加强之反射
- 基础加强之反射
- Java基础加强之反射
- Java基础加强之反射
- 黑马程序员之基础加强之反射
- 黑马程序员_Java基础加强之反射
- 基础加强学习总结之反射
- 黑马程序员_java基础加强之反射
- 黑马程序员-JAVA基础加强之反射
- 黑马程序员_基础加强之反射
- JAVA基础加强之反射1
- JAVA基础加强之反射2
- 黑马程序员-Java基础加强之反射
- 黑马程序员_基础加强之反射
- 黑马程序员--基础加强--第六篇--反射
- java基础加强--反射
- Java基础加强---反射
- 指定格式扩展名文件搜索
- ubuntu下搭建git server
- poj 1556 &zoj 1721
- COM 入门(1)
- 徐波老师博客
- 基础加强篇之-----反射
- 如何解除浏览器禁用JS
- ERP中物料分类控制重要性解析
- mono for androi开发程序运行原理
- 编译ffmpeg for iOS,并调试iFrameExtractor demo
- SQLServer JOB无法运行的问题。
- CSS3 - transform属性
- UVA 11292 Dragon of Loowater
- 关于direct3d vs2012配置与初始化