Java 反射

2021-01-24  本文已影响0人  醉红尘_acb4

Java 反射

Method[] methods = o.getClass().getMethods(); //获取方法集

for (Method c : methods){
    System.out.println("方法名:" + c.getName);
     /*获取方法,方法名,参数类型...*/
    Method method = o.getClass().getMethod(c.getName(), Object.class);
    /*调用方法,当前对象,赋予值*/
    method.invoke(o, "张三");
}

Field[] fields = o.getClass().getDeclaredFields();  //获取字段集

for (Field field : fields){
    /*判断字段是否存在*/
      boolean annotationPresent = field.isAnnotationPresent(ResultValue.class);
    if (annotationPresent){ 
        field.setAccessible(true); /*允许访问私有变量*/
        field.set(o, os); /*字段赋值*/
    }
}

类方法

类别 说明
Class<?> \color{red}{类}
Class.forName(String className) 通过(全路径)类名,获取类对象
 
getConstructors() 获取构造函数集合
getConstructor(String var1) 获取构造函数
 
getDeclaredConstructors() 获取声明的构造函数集合
getDeclaredConstructor(String var1) 获取声明的构造函数
 
getMethods() 获取方法集合
getMethod(String var1) 获取方法
 
getDeclaredFields() 获取声明的字段集合
getDeclaredField(String var1) 获取声明的字段

其他方法

isAnnotationPresent() //是否存在注解
 
getAnnotation(Class<T> annotationClass); //获取注解
 
setAccessible(boolean flag) //是否允许访问私有变量
 
method.invoke(Object var1,Object var2); //执行方法
 
field.set(Object var1, Object var2); //字段赋值

上一篇下一篇

猜你喜欢

热点阅读