zoukankan      html  css  js  c++  java
  • 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();
            }
        }
    }

    待更新。。。

  • 相关阅读:
    用遗传算法解决子集和问题
    XML映射配置文件
    generator插件配置方式使用
    声明
    spring IOC简单分析
    模板模式
    原型模式
    委派模式,策略模式
    单例模式2
    单例模式
  • 原文地址:https://www.cnblogs.com/gunduzi/p/12171784.html
Copyright © 2011-2022 走看看