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(); } } }
待更新。。。