java反射应用
程序员文章站
2022-05-28 19:12:52
...
反射在java中有很大用处,下面举例说明下,在java中怎么通过完整路径获取对象,调用方法。
1、需要通过反射获取的类
package reflectionTset.com.reflection; public class Reflection { /** * 带参 * @param name * @param sex * @param age * @return */ public String methodParameter(String name,String sex,int age){ System.out.println("姓名:" + name + " 性别:" + sex + " 年龄:" + age); return "有参方法操作成功"; } /** * 测试反射不带参方法 * @param name * @param sex * @param age */ public String methodNoParameter(){ System.out.println("欢迎来到无参反射测试方法"); return "无参方法操作成功"; } }
2、测试类
package reflectionTset.com.test; import java.lang.reflect.Method; /** * 放射测试类 * @author Administrator * */ public class ReflectionTest { /** * 测试反射带参方法 * @param name * @param sex * @param age */ public static void methodParameterTest(){ try { //返回与带有给定字符串名的类或接口相关联的 Class 对象 Class c = Class.forName("reflectionTset.com.reflection.Reflection"); //创建该class表示的一个对象 Object obj = c.newInstance(); //返回一个 Method 对象,它反映此 Class 对象所表示的类或接口的指定公共成员方法 //获取一个方法对象,假设方法的参数是一个int,method名为setAge Method sAge = c.getMethod("methodParameter", new Class[] {String.class,String.class,int.class}); //设置参数 Object[] arguments = new Object[] {"你妹","男",29}; //执行方法 //对带有指定参数的指定对象调用由此 Method 对象表示的底层方法。个别参数被自动解包,以便与基本形参相匹配,基本参数和引用参数都随需服从方法调用转换。 Object backStr = sAge.invoke(obj, arguments); System.out.println("执行带参方法的返回值:" + backStr); } catch (Exception e) { e.printStackTrace(); } } /** * 测试反射带参方法 * @param name * @param sex * @param age */ public static void methodNoParameterTest(){ try { //返回与带有给定字符串名的类或接口相关联的 Class 对象 Class c = Class.forName("reflectionTset.com.reflection.Reflection"); //创建该class表示的一个对象 Object obj = c.newInstance(); //返回一个 Method 对象,它反映此 Class 对象所表示的类或接口的指定公共成员方法 //获取一个方法对象,假设方法的参数是一个int,method名为setAge Method sAge = c.getMethod("methodNoParameter"); //执行方法 //对带有指定参数的指定对象调用由此 Method 对象表示的底层方法。个别参数被自动解包,以便与基本形参相匹配,基本参数和引用参数都随需服从方法调用转换。 Object backStr = sAge.invoke(obj); System.out.println("执行无参方法的返回值:" + backStr); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { //带参方法测试 methodParameterTest(); //无参方法测试 methodNoParameterTest(); } }
上一篇: javascript new一个对象的实质_js面向对象
下一篇: php猜单词游戏_PHP