0%

调用运行时类结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package com.sympa.lesson01;

import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class ReflectionTest {

public static void main(String[] args) throws NoSuchMethodException, NoSuchFieldException, InvocationTargetException, InstantiationException, IllegalAccessException {

Class<Person> clazz = Person.class;
Person person = clazz.getDeclaredConstructor().newInstance();
//操作运行时类的指定属性
Field age = clazz.getDeclaredField("age");
//设置当前对象指定属性值
age.set(person, 10); //(操作对象, 设置值)
//获取当前对象指定属性值
int ans = (int)age.get(person);
System.out.println(ans);

//操作运行时类的指定方法
//获取指定方法
Method show = clazz.getDeclaredMethod("show", int.class); //(方法名, 形参列表)
//保证当前方法可访问
show.setAccessible(true);
//执行方法
show.invoke(person, 2); //(方法名, 实参列表)
//invoke返回值即为方法返回值
}
}
------ THEEND ------

欢迎关注我的其它发布渠道