方法的反射
(1)如何获取某个方法
方法的名称和参数列表才能唯一确定某个方法
(2)方法反射放操作
method.invokw(对象,参数列表);
看下面这个 demo
在 A 类中有三个方法,同名但是参数不同。
平时我们要调用他们只需要
A a1 = new A();
a1.print(10,20);即可
现在我们通过反射的方式
先要获取类的类类型,然后再获取的其指定的方法
A a1 = new A();
Class c = obj.getClass();
Method m = c.getMethod("print",int.class,int.class);
m.invoke(a1);
通过反射的方式得到的结果和 a1.print() 方式是一样的。
(1)如何获取某个方法
方法的名称和参数列表才能唯一确定某个方法
(2)方法反射放操作
method.invokw(对象,参数列表);
看下面这个 demo
- package practice.Reflect;
- import java.lang.reflect.Method;
- /**
- * @Author: 言曌
- * @Date: 2017/11/17
- * @Time: 上午9:36
- */
- public class MethodDemo1 {
- public static void main(String args[]) {
- //要获取print(int,int)方法
- //1、要获取一个方法就是获取类的信息,要获取类的信息首先要获取类的类类型
- A a1 = new A();
- Class c = a1.getClass();
- /**
- * 2、获取方法 名称和参数列表来决定
- * getMethod()获取的是public的方法
- * getDelcaredMethod()自己声明的方法
- */
- try {
- //写法一
- // Method m = c.getMethod("print",new Class[]{int.class,int.class});
- //写法二
- Method m = c.getMethod("print",int.class,int.class);
- //之前的操作,非方法的反射
- a1.print(10,20);
- //方法的反射操作,和上面a1.print效果完全相同
- //方法如果没有返回值,返回null,有返回值返回具体的返回值
- //写法一
- m.invoke(a1,new Object[]{10,20});
- //写法二
- m.invoke(a1,10,20);
- System.out.println("----------------------------");
- //获取方法print(String,String)
- Method m1 = c.getMethod("print",String.class,String.class);
- //用方法进行反射操作
- m1.invoke(a1,"hello","world");
- System.out.println("----------------------------");
- //获取方法print()
- Method m2 = c.getMethod("print");
- //用方法进行反射
- m2.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());
- }
- }
在 A 类中有三个方法,同名但是参数不同。
平时我们要调用他们只需要
A a1 = new A();
a1.print(10,20);即可
现在我们通过反射的方式
先要获取类的类类型,然后再获取的其指定的方法
A a1 = new A();
Class c = obj.getClass();
Method m = c.getMethod("print",int.class,int.class);
m.invoke(a1);
通过反射的方式得到的结果和 a1.print() 方式是一样的。
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏