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 }
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论