java通过反射获取调⽤变量以及⽅法⼀:反射概念
java反射的作用及应用场景可以通过Class类获取某个类的成员变量以及⽅法,并且调⽤之。
⼆:通过反射获取⽅法、变量、构造⽅法
1 @Test
2// 通过反射获取类定义的⽅法
3public void testMethod() throws Exception {
4        @SuppressWarnings("rawtypes")
5        Class clazz = Class.forName("java.lang.String");
6        Method[] m = DeclaredMethods();
7for (int i = 0; i < m.length; i++) {
8            System.out.println(m[i].getName() + " " + m[i].getDeclaringClass());
9        }
10    }
11
12    @Test
13// 通过反射获取类定义的变量
14public void testField() throws Exception {
15        @SuppressWarnings("rawtypes")
16        Class clazz = Class.forName("java.lang.String");
17        Field[] fields = Fields();
18for (Field f : fields) {
19            System.out.Name());
20        }
21    }
22
23    @Test
24// 通过反射获取类定义的构造⽅法
25public void testConstructor() throws Exception {
26        @SuppressWarnings("rawtypes")
27        Class clazz = Class.forName("java.lang.String");
28        @SuppressWarnings("rawtypes")
29        Constructor[] cons = Constructors();
30for (@SuppressWarnings("rawtypes")
31        Constructor c : cons) {
32            System.out.println(c + " " + c.getDeclaringClass());
33        }
34    }
三:通过反射调⽤类定义的⽅法
1 @Test
2// 通过反射调⽤类定义的⽅法
3public void testInvokeMethod() throws Exception {
4        Class clazz = Class.forName("java.lang.String");
5// 定义参数类型
6        Class[] params = new Class[1];
7        params[0] = String.class;
8        Method m = DeclaredMethod("indexOf", params);
9// 设置参数
10        Object[] p = new Object[1];
11        p[0] = "e";
12        Integer s = (Integer) m.invoke("helloworld!", p);
13        System.out.println(s);
14    }