Fork me on GitHub

java基础之----反射

概述

反射在日常工作中用的并不多,最近在看spring源码,里面很多的bean的初始化和依赖注入中用到了很多的反射,下面介绍一下反射的基本知识。

获取类中的字段和修改字段的值

package com.demo.spring;

import java.lang.reflect.Field;

public class Test {

    String a = "hello";
    String b = "gogogo";

    public void test(){
        System.out.println(a);
    }

}

class Test1{
    public static void main(String[] args) {

        try {
            Class<?> clazz = Class.forName("com.demo.spring.Test");
            //这种方式可以单独获取类中的某个属性值
//            Field field = clazz.getDeclaredField("a");

            Object o = clazz.newInstance();
            //通过Class.forName和类的实例对象获取类的信息的效果是一样的
            System.out.println(clazz.equals(o.getClass()));
            Field[] fields = clazz.getDeclaredFields();
            for (Field field1 : fields){
                if (field1.getName().equals("a") || field1.getName().equals("b")) {
                    field1.setAccessible(true);
                    //修改字段的值
                    field1.set(o, new String("abcd"));
                    //获取字段名称
                    System.out.println(field1.getName());
                    System.out.println("------------------");
                    //获取字段值
                    System.out.println(field1.get(o));
                }
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

待更新。。。

posted @ 2020-01-09 15:43  猿起缘灭  阅读(158)  评论(0编辑  收藏  举报