package me.test; import java.lang.reflect.*; //导入反射需要的包 public class ReflectTest { public static void main(String[] args) throws Exception { /* 下面通过反射完成对一个对象中成员的替换 * 并且执行执行私有方法 * 完成对 Poiont类的对象中所有的 String的对象的d换成x * 并且类中无修改方法 */ Point pt=new Point(3,5); //创建一个Point对象 Field fx=pt.getClass().getField("x") ; //获取x的映射类对象 Field fy=pt.getClass().getDeclaredField("y");//因为y是私有的所以要调用这个方法 Method m2=Point.class.getDeclaredMethod("showPrivate") ;//获得私有方法映射类 //利用反射调用共有输出 m2.setAccessible(true) ;// 修改showPrivate 权限 改变为可以调用 m2.invoke(pt) ;//执行私有方法 //利用成员反射输出x 和 私有的 y System.out.println(fx.getInt(pt));//反射输出x fy.setAccessible(true) ;//改变私有为可访问 System.out.println(fy.getInt(pt));//输出私有y //替换成员后并且反射私有方法输出 changeString(pt) ;//反射替换成员值 System.out.println(pt); } public static void changeString(Object obj) throws Exception//反射替换对所有String进行替换 { Field[] f=obj.getClass().getFields() ; //获得成员映射数组 for(Field tem : f) //迭代for循环 { if(tem.getType()==String.class) //内存中只有一份String字节码 { String oldString=(String)tem.get(obj) ; //返回内容 String newString=oldString.replace('d', 'x');//将所有b替换为x tem.setAccessible(true); tem.set(obj, newString) ;//替换成员值 } } } } public class Point { public int x ; private int y ; public Point(int x, int y) { super(); this.x = x; this.y = y; } public String a="dsfdsfd" ; //只有 共有可以替换 public String b="fdsfdsfewewwwww" ; public String c="adddssss" ; private void showPrivate() //私有方法输出 { System.out.println("x="+this.x+"\n"+"y="+this.y); System.out.println(this.a); System.out.println(this.b); System.out.println(this.c); } public String toString() { return this.a+"\n"+this.b+"\n"+this.c; } }
相关推荐
java 反射 调用私有方法(有参数私有方法)获取私有属性值
Java反射机制,万物皆对象,class也是一个类的对象,通过类类型,反射获得类的成员属性,构造方法,成员方法,并调用类中的方法,也可以调用私有方法。
Java反射 调用空参方法 调用Object类型参数的方法 调用基本类型参数的方法 调用基本类型数组参数的方法 调用String数组参数的方法 调用Object数组参数的方法 调用私有方法
编写Student类,类中包含学生姓名,学号等私有数据成员。 使用JAVA反射机制修改一个学生对象的私有数据成员(不允许调用setters)
55.java方法调用.zip55.java方法调用.zip55.java方法调用.zip55.java方法调用.zip55.java方法调用.zip55.java方法调用.zip55.java方法调用.zip55.java方法调用.zip55.java方法调用.zip55.java方法调用.zip55.java...
random调用类java.lang.math的成员方法
57.java带参数方法调用.zip57.java带参数方法调用.zip57.java带参数方法调用.zip57.java带参数方法调用.zip57.java带参数方法调用.zip57.java带参数方法调用.zip57.java带参数方法调用.zip57.java带参数方法调用.zip...
利用自定义数据可以把单个的私有成员打包,然后将外部变量的地址指向类内部的私有成员数据地址,就可以实现修改外部变量的同时,类内部的私有成员数据也发生了变化。从而实现了类内部私有成员的数据可以直接操作的...
基于java的开发源码-brap(Java远程调用框架 BRAP).zip 基于java的开发源码-brap(Java远程调用框架 BRAP).zip 基于java的开发源码-brap(Java远程调用框架 BRAP).zip 基于java的开发源码-brap(Java远程调用框架 BRAP)....
Java 反射详解(包含私有方法属性的调用)
介绍一篇关于PHP通过反射方法调用执行类中的私有方法,希望这篇教程能够帮助到各位朋友,有兴趣的可以进来看看。具有完整的反射 API,添加了对类、接口、函数、方法和扩展进行反向工程的能力。
使用JAVA反射机制动态调用 计算器对象的加法,减法函数。 使用JAVA反射机制修改一个学生对象 的私有数据成员(不允许调用setters) 使用的类有Class, Method, Field
invokeMethod.java 利用反射机制调用成员方法 listConstructors.java 利用反射机制获取构造器列表 listFields.java 利用反射机制获取成员属性列表 listMethods.java 利用反射机制获取成员方法列表 loadClass....
内含java调用cxf发布的webserice接口的极简案例,同时压缩包中有 cxf-core-3.0.0.jar,cxf-rt-bindings-soap-3.0.0.jar,cxf-rt-databinding-jaxb-3.0.0.jar,cxf-rt-frontend-jaxws-3.0.0.jar,cxf-rt-frontend-...
对于任意一个对象,都能够调用它的任意一个方法,常见的应用如下 逆向代码 ,例如反编译 与注解相结合的框架 例如Retrofit 单纯的反射机制应用框架 例如EventBus 2.x 动态生成类框架 例如Gson Java高级程序设计实战...
Method,invoke,getMethod等反射私有方法和私有属性
使用Java反射机制动调用计算器的加法,加法函数 使用Java反射机制修改一个学生对象的私有数据成员
JAVA反射机制-Class类-Class对象的获取.pdf
C#私有成员反射调用类库