首页 > 代码库 > Java-反射之方法反射的基本操作

Java-反射之方法反射的基本操作

  以前,我们调用一个类里面的方法,通常通过对象名来进行操作。今天我们通过反射机制来调用类里面的方法,包括私有的方法也可以调用。

 1 package com.example.Reflect;
 2 
 3 import java.lang.reflect.InvocationTargetException;
 4 import java.lang.reflect.Method;
 5 
 6 public class MethodDemo1 {
 7     public static void main(String[] args) {
 8         A a = new A();
 9         Class c1 = a.getClass();
10         /**
11          * 通过getMethod
12          */
13         try {
14             /**获得print(int , int)方法
15              * 
16              */
17             //Method method = c1.getMethod("print", new Class[]{int.class, int.class});
18             Method method = c1.getMethod("print", int.class, int.class);
19             /**
20              * 如果方法返回值类型为空的话,则下面的调用返回的值null
21              * 否则返回的是Object的对象
22              */
23             //Object invoke = method.invoke(a, new Object[]{10, 20});
24             Object invoke = method.invoke(a, 10, 20);
25             
26             /**
27              * 获得print()方法
28              */
29             //method = c1.getMethod("print");
30             method = c1.getMethod("print", new Class[]{});
31             //method.invoke(a);
32             method.invoke(a, new Object[]{});
33         } catch (NoSuchMethodException | SecurityException e) {
34             // TODO Auto-generated catch block
35             e.printStackTrace();
36         } catch (IllegalAccessException e) {
37             // TODO Auto-generated catch block
38             e.printStackTrace();
39         } catch (IllegalArgumentException e) {
40             // TODO Auto-generated catch block
41             e.printStackTrace();
42         } catch (InvocationTargetException e) {
43             // TODO Auto-generated catch block
44             e.printStackTrace();
45         }
46         
47     }
48 }
49 class A
50 {
51     public void print()
52     {
53         System.out.println("hello world");
54     }
55     public void print(int a, int b)
56     {
57         System.out.println(a + b);
58     }
59     public void print(String a, String b)
60     {
61         System.out.println(a + ", " + b);
62     }
63 }

 

Java-反射之方法反射的基本操作