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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 0xc0000225无法进系统_Win10无法开机0xc0000225错误代码解决方法

    0xc0000225无法进系统_Win10无法开机0xc0000225错误代码解决方法早在使用Win7系统的时候我们就会遇到0xc0000225错误无法开机的问题,而在Win10系统的使用中,同样很多小伙伴也遇到了该错误,那么这时我们要怎么解决呢?下面小编就和大家分享下Win10无法开机0xc0000225错误代码的原因和解决方法。出现0xc0000225错误的原因:出现错误代码0xc0000225,表示Windows无法找到用于引导的BCD(引导配置数据)文件。如果您的系统文…

    2022年6月26日
  • uint16与int16的区别_golang int转string

    uint16与int16的区别_golang int转stringGolang中uint、int,int8,int16,int32,int64区别在第一次学习go语言时,对go语言的各种int类型充满疑惑,为什么会有int、int8、int16等等的类型呢?为什么不像java一样,只个int类型呢?直接上demotest.gopackagemainimport(“fmt””unsafe”)fun…

    2022年9月20日
  • tracert命令的原理是什么_tracert命令的原理

    tracert命令的原理是什么_tracert命令的原理1. Tracert 命令的原理与作用Tracert命令诊断实用程序通过向目标计算机发送具有不同生存时间的ICMP数据包,来确定至目标计算机的路由,也就是说用来跟踪一个消息从一台计算机到另一台计算机所走的路径。该诊断实用程序将包含不同生存时间 (TTL

    2022年9月24日
  • faster-rcnn原理介绍

    faster-rcnn原理介绍本博客大部分参考http://blog.csdn.net/zy1034092330/article/details/62044941,其中夹杂着自己看论文的理解效果图作者提到目标检测,就不得不RBG大神,该大神在读博士的时候就因为dpm获得过pascalvoc的终身成就奖。博士后期间更是不断发力,RCNN和Fast-RCNN,Faster-Rcnn就是他的典型作品。前言讲起faster-rcnn

    2022年10月4日
  • CentOS7 安装 kafka「建议收藏」

    CentOS7 安装 kafka「建议收藏」文章目录一、安装JDK二、安装zookeeper三、安装kafka一、安装JDKrpm-qa|grepjavarpm-qa|grepjdkrpm-qa|grepgcjrpm-qa|grepjava|xargsrpm-e–nodeps #卸载老版本yumlistjava-1.8*yuminstalljava-1.8.0-openjdk*-yjava-version二、安装zookeeper官方地址:https://ar

    2022年6月6日
  • Navicat 15 for MySQL激活码-激活码分享

    (Navicat 15 for MySQL激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月26日

发表回复

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

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