java 反射机制原理 简述[通俗易懂]

java 反射机制原理 简述[通俗易懂]什么是反射机制?1、在运行状态中,对于任意一个类,都能够知道这个类的属性和方法。2、对于任意一个对象,都能够调用它的任何方法和属性。这种动态获取信息以及动态调用对象的方法的功能称为JAVA的反射。反射的作用1、在运行时判断任意一个对象所属的类;2、在运行时构造任意一个类的对象;3、在运行时判断任意一个类所具有的成员变量和方法;4、在运行时调用任意一个对象的方法;生成动态代理。反射的…

大家好,又见面了,我是你们的朋友全栈君。

什么是反射机制?

1、在运行状态中,对于任意一个类,都能够知道这个类的属性和方法。
2、对于任意一个对象,都能够调用它的任何方法和属性。这种动态获取信息以及动态调用对象的方法的功能称为JAVA的反射。

反射的作用

1、在运行时判断任意一个对象所属的类;
2、在运行时构造任意一个类的对象;
3、在运行时判断任意一个类所具有的成员变量和方法;
4、在运行时调用任意一个对象的方法;生成动态代理。

反射的原理

反射的实现主要借助以下四个类:Class、Constructor、Field、Method ;
1、通过Class类获取类对象的三种方法:
第一种:通过类名获得:Class<?> class = ClassName.class;
第二种:通过类名全路径获得:Class<?> class = Class.forName(“类名全路径”);
第三种:通过实例对象获得:Class<?> class = object.getClass();

2、通过Class类获取实现类实例化:
Object o = (Object) c.newInstance() ; (其中c为Class类的实例化对象)

3、获取类中的构造方法:在这里插入图片描述在这里插入图片描述
4、获取类中的属性:

在这里插入图片描述
在这里插入图片描述

5、获取类中的方法:

在这里插入图片描述
在这里插入图片描述

注:

1、ClassForName 与 ClassLoader 的区别:
1)class.forName()除了将类的.class文件加载到jvm中之外,还会对类进行解释,执行类中的static块,还会执行给静态变量赋值的静态方法;
2)classLoader只干一件事情,就是将.class文件加载到jvm中,不会执行static中的内容,只有在newInstance才会去执行static块。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/157024.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月8日 上午10:36
下一篇 2022年7月8日 上午10:46


相关推荐

  • 配置NFS服务器

    配置NFS服务器配置 NFS 服务器

    2026年3月17日
    2
  • 阿里云服务器开放端口步骤图_阿里云服务器新手教程

    阿里云服务器开放端口步骤图_阿里云服务器新手教程点击进入云服务器ECS2.然后点击服务器的实例id进入以下界面点击进入安全组点击配置规则点击添加安全组规则添加安全组规则就ok了

    2022年10月2日
    7
  • 详述 hosts 文件的作用及修改 hosts 文件的方法

    详述 hosts 文件的作用及修改 hosts 文件的方法1 什么是 hosts 文件 hosts 是一个没有扩展名的系统文件 其基本作用就是将一些常用的网址域名与其对应的 IP 地址建立一个关联 数据库 当用户在浏览器中输入一个需要登录的网址时 系统会首先自动从 hosts 文件中寻找对应的 IP 地址 一旦找到 系统就会立即打开对应网页 如果没有找到 则系统会将网址提交 DNS 域名解析服务器进行 IP 地址的解析 2hosts 文件的作用 2 1

    2026年3月18日
    2
  • iOS逆向:【ARM 移位操作】(LSL、ASL、LSR、ASR、ROR、RRX)

    iOS逆向:【ARM 移位操作】(LSL、ASL、LSR、ASR、ROR、RRX)前言移位操作在 ARM 指令集中不作为单独的命令使用 它在指令格式中是一个字段 1 LSL 逻辑左移 LogicalShift 与 ASL 算术左移 ArithmeticSh 逻辑左移与算术左移的操作是一样的 都是将操作数向左移位 低位补零 移除的高位进行丢弃 MOVR0 5MOVR1 R0 LSL 2 上述命令 就是将 5 存储到 R0 寄存器

    2026年3月19日
    2
  • android 双屏壁纸,怎么让双屏显示壁纸不一样

    android 双屏壁纸,怎么让双屏显示壁纸不一样答 右击 个性化 选择桌面背景浏览 选择要的壁纸图片所在的文件夹 右击某一张具体的图片 选择监视器 1 再右击另外一张图片 选择监视器 2 选择保存更改 然后就可以看看效果了答 应该是产品的批次不同 导致的微小色差吧没大看明白问题的意思 你是问电脑显示器的壁纸吗 是两边黑色的还是什么情况 如果是黑色的就是壁纸的分辨率和显示器的分辨率不一样 可以选择填充 平铺等应该是光线的问题答 壁纸 手

    2026年3月17日
    2
  • golang 设置ip地址_post请求header设置

    golang 设置ip地址_post请求header设置直接贴代码packagemainimport( “io” “net/http” “encoding/json”)typeKPIstruct{ Fziint`json:”fenzi”`//分子 Fmuint `json:”fenmu”` //分母}funckpi(whttp.ResponseWriter,r*http.Request){ kk…

    2022年8月24日
    19

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号