zoukankan      html  css  js  c++  java
  • 反射概述

    先说下普通情况下新建一个类的过程。
    当我们为某个项目配置好jdk后,java文件在进行编译时,javac就已经将对应的Java文件编译为class文件了。
    在java中创建这个类的对象时且该类是首次被加载时,jvm虚拟机就加载对应的class文件并在内存中(方法区)创建了这个类对象并拷贝这个class文件中所有的成员变量到这个class类对象。
    之后在堆内存中开辟一块内存空间用于存储这个类的对象并拷贝一份属性,栈中存放的是堆中对应的类的对象的内存地址。

    通过反射创建对象过程:
    通过创建对象实例加载class文件到jvm上面时创建的Class对象来获取这个类中的成员变量。
    简单来说就是平时我们获取这个类的信息是通过实例这个类来获取,而反射就是通过class类对象来获取信息
    一下过程就是通过Student的class文件获取对象。

    public class reflectlianxi {
    @Test//通过反射获取成员变量
    public void reflectForBianliang() throws Exception{
    //我们是可以通过反射来获取或者设置类对象中的变量的
    //创建一个类对象
    Class cla=Student.class;
    //创建用类对象创建一个实例对象(这个方法会调用无参构造)
    Object obj=cla.newInstance();
    //获取这个类中的某个对象
    Field fie=cla.getDeclaredField("age");
    //开启权限,否则无法设置私有变量
    fie.setAccessible(true);
    //赋值
    fie.set(obj, "18");
    //取值
    Object value=fie.get(obj);
    System.out.println(value);

    }
  • 相关阅读:
    Java学习之路
    ofo开锁共享平台
    Texstudio
    我的母亲 (老舍)
    Excel数据透视表
    Excel分类汇总与数据有效性
    Tomcat源码分析
    证明:在任意六人的聚会中,要么有三人曾经认识,要么有三人不曾认识
    琅琊榜读书笔记
    选择排序可视化
  • 原文地址:https://www.cnblogs.com/keyforknowledge/p/11399762.html
Copyright © 2011-2022 走看看