目录
获取类的成员变量
方法
- Class提供了从类中获取成员变量的方法。
方法 | 说明 |
---|---|
public Field[] getFields() | 获取类的全部成员变量(只能获取public修饰的) |
public Field[] getDeclaredFields() | 获取类的全部成员变量(只要存在就能拿到) |
public Field getField(String name) | 获取类的某个成员变量(只能获取public修饰的) |
public Field getDeclaredField(String name) | 获取类的某个成员变量(只要存在就能拿到) |
代码实例(1)
import org.junit.Test;
import java.lang.reflect.Field;
public class Test3Field {
@Test
public void testGetField(){
//1.反射第一步,必须是先得到类的Class对象
Class c = Cat.class;
//2.获取类的全部成员变量
Field[] fields = c.getDeclaredFields();
//3.遍历这个成员变量数组
for(Field field:fields){
System.out.println(field.getName() + "---->" + field.getType());
}
}
}
运行结果:
代码实例(2)
运行结果:
作用
- 依然是赋值、取值
方法 | 说明 |
---|---|
void set(Object obj,Object value) | 赋值 |
Object get(Object obj) | 取值 |
public void setAccessible(boolean flag) | 设置为true,表示禁止检查访问控制(暴力反射) |
代码实例(3)
运行结果:
获取类的成员方法
方法
- Class提供了从类中获取成员方法的API。
方法 | 说明 |
---|---|
Method[] getMethods() | 获取类的全部成员方法(只能获取public修饰的) |
Method[] getDeclaredMethods() | 获取类的全部成员方法(只要存在就能拿到) |
Method getMethod(String name, Class<?>...parameterTypes) | 获取类的某个成员方法(只能获取public修饰的) |
Method getDeclaredMethod(String name, Class<?>...parameterTypes) | 获取类的某个成员方法(只要存在就能拿到) |
代码实例(4)
import org.junit.Test;
import java.lang.reflect.Method;
public class Test3Method {
@Test
public void testGetMethod() throws Exception{
//1.反射第一步:先得到Class对象
Class c = Cat.class;
//2.获取类的全部成员方法
Method[] methods = c.getDeclaredMethods();
//3.遍历这个数组中的每个方法对象
for(Method method:methods){
System.out.println(method.getName() + "---->" +
method.getParameterCount() + "---->" +
method.getReturnType());
//方法名 + 参数个数 + 返回值类型
}
}
}
运行结果:
代码实例(5)
Cat类中添加方法:
运行结果:
作用
- 依然是执行
Method提供的方法 | 说明 |
---|---|
public Object invoke(Object obj, Object... args) | 触发某个对象的该方法执行。 |
public void setAccessible(boolean flag) | 设置为true,表示禁止检查访问控制(暴力反射) |
代码实例(6)
运行结果:
END
学习自:黑马程序员——Java课程