首页 > 编程语言 >反射学习——Robyn编程学习(Java)

反射学习——Robyn编程学习(Java)

时间:2022-10-17 22:15:03浏览次数:48  
标签:反射 Java name stuClass Robyn System 学习 year println

反射

为什么我们需要反射?

因为反射就是通过找到一个类的CLASS对象,从而对该类的属性和方法进行操作,可以理解为使用了一个镜子来操控类。

反射原理图

反射优化

类加载的过程

反射的演示

 //得到Class对象
        Class<?> stuClass = Class.forName("reflection.Student");
        //有参数时创建实例,通过构造器对象创建
        Constructor<?> constructor = stuClass.getConstructor(String.class);
        Object hsp = constructor.newInstance("hsp");
        //无参数时,可以直接创建对象
        Object o = stuClass.newInstance();
        System.out.println(o.getClass());
        Field name = stuClass.getField("name");
        name.set(o,"age");
        System.out.println(name.get(o));
        Field year = stuClass.getDeclaredField("year");
        year.setAccessible(true);//这里是使用爆破来访问私有属性
        year.set(o,77);
        year.set(null,77);//类变量可以直接设置
        System.out.println(year.get(o));

        Method setName = stuClass.getDeclaredMethod("setName", String.class);
        Method setYear = stuClass.getDeclaredMethod("setYear", int.class);
        setName.invoke(o,"age");
        setYear.invoke(null,24);//方法反向调用
        System.out.println(name.get(o));

标签:反射,Java,name,stuClass,Robyn,System,学习,year,println
From: https://www.cnblogs.com/robyn2022/p/16800894.html

相关文章

  • python学习记录13:通用VIP视频解析播放工具源码
     importtkinterastk#导入模块importwebbrowser#视频解析主函数defshow():word=input_va.get()num=num_int_va.get()ifnum==1:link='https......
  • makefile学习
    makefile书写规则TARGET...:PREREQUISITES...COMMANDTARGET:规则目标,可以是一个objectfile(目标文件),也可以是一个执行文件,还可以是一个标签(label)。PREREQUISITE......
  • 机器学习实战-支持向量机
    1.支持向量机简介英文名为SupportVectorMachine简称为SVM,是一种二分类模型线性可分支持向量机:如下图就可以通过一条红色的直线将蓝色的球和红色的球完全区分开,该直......
  • 1033 旧键盘打字(JAVA)
    旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及坏掉的那些键,打出的结果文字会是怎样?输入格式:输入在2行中分别给出坏......
  • Python与JavaScript交互
    介绍“胶水”语言Python很擅长于其他语言交互,本文介绍如何与JavaScript来交互。 ......
  • JAVA容器
    容器的思想面向接口编程。已经学习过数组Array,但是不可扩容,因此有了集合框架. 如果并不知道程序运行时会需要多少对象,或者需要更复杂方式存储对象——可以使用Java集......
  • 图像处理学习笔记-07-小波和多分辨率处理
    背景图像金字塔金字塔底部是图像的高分辨率表示,顶部是低分辨率表示,假设最底部基础级\(J\)的大小为\(2^J\times2^J\)或\(N\timesN\),最顶部级0的大小为\(1\times1\)......
  • javaweb实操之session'
    什么是session服务器会给一个用户(浏览器)创建一个session对象一个session独占一个浏览器,只要浏览没有关闭,这个session就存在用户登录之后,整个网站都可以访问->保存用......
  • 基于深度学习的人脸识别系统——原理篇
    1.深度学习的基本原理深度学习的起源最早可以追溯到感知机,所谓的感知机即只有一个神经元的单层神经网络,它只能完成一个简单的线性分类任务,而要解决非线性的任务,一是......
  • Linux学习和软件安装
    Linux运维的本质运维:运行维护应用程序岗位需求:自动化运维、DBA、docker+K8s...运维职责:   1.尽可能保证应用程序24小时不间断运行   2.尽可能保证数据的......