· 简介

Java Reflection,称为 Java 反射,是Java基础部分的一个比较难的点。Reflection(反射)是被视为动态语言的关键,通过反射机制,我们可以在运行时(runtime)获取类的完整结构。例如,可以获取到类的变量名、方法、构造器、内部类、接口、注解等等,并且通过反射机制可以对类内部进行操作。

Java反射机制在实际开发中是非常常用的,强大一词完全可以用来形容它。作为Java基础内容的一部分,并且在很多开源框架(jdbc、spring、hibermate...)都使用到反射,可谓反射的重要性。

· 例子

首先,定义一个 Person 类及 Student 类,Student 继承自 Person 类,代码非常简单。如下:

有了这两个类,我们就可以开始利用反射来获取类的内部结构了。我们常规的创建对象操作:

  • 反射4种方式

在开始之前,我们来学习如何利用反射的方式来获取类的结构,反射的方式有这样 4 种。

* 反射的4种获取方式,反射的源头就是获取到一个 Class 对象进行操作类的内部方法和获取类的结构。

注意:父类中声明为 public 的变量、方法、接口等也可以被获取到。

以下都是利用反射来获取类结构的例子。

  • 获取类中的变量,并进行赋值

获取变量的权限修饰符(private、protected、public)

  • 获取类中的方法,并调用该方法(需注意权限修饰符)
  • 获取类中方法的返回值
  • 获取类中方法形参列表
  • 获取类中方法异常类型
  • 获取类的完整包名、
  • 类中所有的构造器、
  • 类中实现的所有接口

获取父类的结构

以上的几个例子可以让我们知道反射的作用,反射能够在运行时状态下获取类的完整结构,在框架里显得尤为重要。

反射获取类_新人也能看懂?如何使用 Java 反射?反射的用法及案例相关推荐

  1. Python面向对象,类,继承,多态及鸭子类型,获取类的类型,方法和属性(类似java的反射)

    1.创建类的代码: #在Java中,所有的最终父类都是Object #在python中也是,一个类没有直接的父类就写入objectclass Animal(object):#在python中init方 ...

  2. Java知识点总结(反射-获取类的信息)

    Java知识点总结(反射-获取类的信息) @(Java知识点总结)[Java, 反射] 应用反射的API,获取类的信息(类的名字.属性.方法.构造器等) import java.lang.reflec ...

  3. Java基础-通过反射获取类的信息

    目录 1.获取Field 2.反编译Field 3.通过反射机制访问对象属性 4.可变长度参数 5.反射Method(了解) 6.反编译(了解) 7.反射机制调用方法 8.反射Constructor ...

  4. 通过反射获取类的所有属性和方法

    通过反射获取类的所有属性和方法  1    private void button1_Click(object sender, EventArgs e)  2        {  3          ...

  5. java反射获取实现类_Java介绍通过反射获取类的信息

    免费学习推荐:java基础教程 目录1.获取Field 2.反编译Field 3.通过反射机制访问对象属性 4.可变长度参数 5.反射Method(了解) 6.反编译(了解) 7.反射机制调用方法 8 ...

  6. sip 时序图_时序图怎么看_教你如何看懂时序图 - 什么是时序图_时序图怎么看_教你如何看懂时序图...

    时序图怎么看_教你如何看懂时序图 操作时序永远使用是任何一片IC芯片的最主要的内容.一个芯片的所有使用细节都会在它的官方器件手册上包含.所以使用一个器件事情,要充分做好的第一件事就是要把它的器件手册上 ...

  7. java和python的web自动化有什么区别-三分钟看懂Python和Java的区别

    随着人工智能的火爆,Python和Java一直在各种流行编程语言中名列前茅.其实Java和Python有些相似,因为很多编程语言之间是互通的.Java现在还是第一,不知道Python未来会不会超越Ja ...

  8. python和java一样吗-三分钟看懂Python和Java的区别

    随着人工智能的火爆,Python和Java一直在各种流行编程语言中名列前茅.其实Java和Python有些相似,因为很多编程语言之间是互通的.Java现在还是第一,不知道Python未来会不会超越Ja ...

  9. python和java的区别-三分钟看懂Python和Java的区别

    随着人工智能的火爆,Python和Java一直在各种流行编程语言中名列前茅.其实Java和Python有些相似,因为很多编程语言之间是互通的.Java现在还是第一,不知道Python未来会不会超越Ja ...

最新文章

  1. 有序单链表的归并算法
  2. 【编译原理】词法分析和语法分析两万字全总结(这知识它不进脑子啊~!)
  3. 删除链表重复节点 python_java删除链表中重复的节点(保留一个节点)
  4. hive(3)——使用mapreduce
  5. HTTP Status 403 - Access to the requested resource has been denied
  6. 得到频域波形的坐标数组_10. 频域法之序
  7. 工作流实战_10_flowable 流程实例的删除
  8. 二级域名和二级目录的联系与区别
  9. commons fileupload的DiskFileItemFactory
  10. MCE公司:新型 RORγt 小分子反向激动剂的发现
  11. 【总结】防病毒网关---防毒墙
  12. Ubuntu 18.04截屏
  13. 2021年化工自动化控制仪表考试资料及化工自动化控制仪表免费试题
  14. Python 基础 之 jupyter notebook 中机器学习的简单入门书写数字识别 demo 操作学习
  15. 运维如何学习、自我提升价值?
  16. 微信转账php开发心得
  17. 10年程序员怒斥:只会八股文没用,公司招你来是做项目的,不是背题的……
  18. 打印杨辉三角 - C语言实现
  19. nz-modal 使用
  20. 1万条数据大概占多大空间_10月漫画数据月报丨多平台收藏数,评论数较上月稳定提升,狐妖小红娘播放量再创新高...

热门文章

  1. 计算机由简单的二进制阴阳,二进制之美,大道至简,二生万物!
  2. python定义一个字符串后怎么修改_python基础--字符串操作详解
  3. java 二分查找_JAVA 实现二分查找算法。我知道你会,但没你想象的那么简单
  4. 武汉学java_学习武汉Java开发想要找到工作,需要学到什么程度呢?
  5. 3534 helpmsg mysql net_MySQL出现NET HELPMSG 3534
  6. 上古卷轴 java_上古卷轴II-双帝传奇
  7. r如何查询mysql中的数据类型_MySQL-mysql中的数据类型
  8. charles抓包工具_HTTP协议抓包工具:Charles for Mac
  9. linux怎么卸载evolution,linux - 如何在Ubuntu的系统托盘中最小化Evolution? - Ubuntu问答...
  10. vc++6.0中创建工程时选Win32 Application和Win32 console Application的区别