java反射之方法反射的基本操作方法
程序员文章站
2023-12-22 13:45:28
本文接上文“”,利用反射(invoke)来获取一个类中的方法来执行。
1、定义一个类,包含三个名称相同,参数不同的方法
class a{
public v...
本文接上文“”,利用反射(invoke)来获取一个类中的方法来执行。
1、定义一个类,包含三个名称相同,参数不同的方法
class a{ public void print(){ system.out.println("hello,world"); } public void print(int a,int b){ system.out.println(a+b); } public void print(string a,string b){ system.out.println(a.touppercase()+","+b.tolowercase()); } }
2、利用方法的反射(invoke)分别获取该类三个方法并执行
public class test { public static void main(string[] args) { /** * 获取print(int,int)方法 * 1、获取类的类类型 */ a a1 = new a(); class clazz = a1.getclass(); /** * 2、获取方法(名称、参数列表) * getmethod()获取的是public方法 * getdeclaredmethod()获取的是自己声明的方法 */ try { // method m = clazz.getmethod("print",new class[]{int.class,int.class}); method m = clazz.getmethod("print", int.class, int.class); //方法的反射操作,用m对象进行方法调用,a1.print完全相同 //方法没有返回值返回null,有返回值返回具体的返回值 // object obj = m.invoke(a1,new object[]{10,20}); object obj = m.invoke(a1,10,20); system.out.println("================================================"); method m2 = clazz.getmethod("print", string.class, string.class); m2.invoke(a1,"aaa","bbb"); system.out.println("================================================"); method m3 = clazz.getmethod("print"); m3.invoke(a1); } catch (exception e) { e.printstacktrace(); } } }
3、完整代码
package com.format.test; import java.lang.reflect.method; /** * created by format on 2017/6/3. */ public class test { public static void main(string[] args) { /** * 获取print(int,int)方法 * 1、获取类的类类型 */ a a1 = new a(); class clazz = a1.getclass(); /** * 2、获取方法(名称、参数列表) * getmethod()获取的是public方法 * getdeclaredmethod()获取的是自己声明的方法 */ try { // method m = clazz.getmethod("print",new class[]{int.class,int.class}); method m = clazz.getmethod("print", int.class, int.class); //方法的反射操作,用m对象进行方法调用,a1.print完全相同 //方法没有返回值返回null,有返回值返回具体的返回值 // object obj = m.invoke(a1,new object[]{10,20}); object obj = m.invoke(a1,10,20); system.out.println("================================================"); method m2 = clazz.getmethod("print", string.class, string.class); m2.invoke(a1,"aaa","bbb"); system.out.println("================================================"); method m3 = clazz.getmethod("print"); m3.invoke(a1); } catch (exception e) { e.printstacktrace(); } } } class a{ public void print(){ system.out.println("hello,world"); } public void print(int a,int b){ system.out.println(a+b); } public void print(string a,string b){ system.out.println(a.touppercase()+","+b.tolowercase()); } }
4、执行结果
以上这篇java反射之方法反射的基本操作方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。