指程序可以访问、检测和修改本身的状态或行为的一种能力或特性。

反射(Reflection)机制是Java语言特性之一,是Java被视为动态(或准动态)语言的一个关键特性。

Java反射有以下3个动态特征:

  1. 运行时创建实例。
  2. 运行期间调用方法。
  3. 运行是更改属性。

JAVA机制反射是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

Java中编译类型有两种:

  • 静态编译:在编译时确定类型,绑定对象即通过。

  • 动态编译:运行时确定类型,绑定对象。动态编译最大限度地发挥了Java的灵活性,体现了多态的应用,可以降低类之间的耦合性。

通过Java反射可以实现以下功能:

  1. 在运行时探知任意一个实例所属的类。
  2. 在运行时构造任意一个类的实例。
  3. 在运行时探知任意一个类所具有的方法和属性。
  4. 在运行时调用任意一个实例的方法。

就像照镜子能够看清自己,可以看清一个类的情况并加以使用。并且,反射机制是构建框架技术的基础所在。

使用反射虽然会很大程度上提高代码的灵活性,但不能滥用反射,因为通过反射创建和访问实例时性能要稍低一些,且反射可能会破坏封装。实际上,只有当程序需要动态创建类的实例时才会考虑用反射。

什么是反射(Reflection)?它能做什么?相关推荐

  1. C#反射(Reflection)详解

    1. 什么是反射 2. 命名空间与装配件的关系 3. 运行期得到类型信息有什么用 4. 如何使用反射获取类型 5. 如何根据类型来动态创建对象 6. 如何获取方法以及动态调用方法 7. 动态创建委托 ...

  2. CSharpGL(43)环境映射(Environment Mapping)-天空盒(Skybox)反射(Reflection)和折射(Refraction)...

    CSharpGL(43)环境映射(Environment Mapping)-天空盒(Skybox)反射(Reflection)和折射(Refraction) 开始 如图所示,本文围绕GLSL里的sam ...

  3. 反射(reflection)基础

    反射(reflection) 1. 一个需求引出反射 1.1 请看下面的问题 根据配置文件 re.properties 指定信息,创建Cat对象并调用方法hi 我们用之前的方式处理就是: 先创建一个C ...

  4. JavaSE——第23章 反射reflection

    JavaSE--第23章 反射reflection(老师:韩顺平) 文章目录 JavaSE--第23章 反射reflection(老师:韩顺平) 23.2 反射机制 23.2.1 Java refle ...

  5. 什么是反射 (Reflection)?可以用它做什么?

    一.什么是反射: (1)Java反射机制的核心是在程序运行时动态加载类并获取类的详细信息,从而操作类或对象的属性和方法.本质是JVM得到class对象之后,再通过class对象进行反编译,从而获取对象 ...

  6. 反射(Reflection)

    能够分析类能力的程序称为反射. 检查类的结构(反射机制最重要的内容) 使用反射在运行时分析对象 使用反射编写泛型数组代码 调用任意方法与构造器 动态语言的关键,允许程序在执行期间借助 Reflecti ...

  7. Java中的反射(Reflection)为什么叫“反射”?什么是“正射”?如何自定义注解并解析?

    文章目录 反射的定义 什么是"正射" 反射的作用 反射的定义 计算机科学中的反射(reflection) 指计算机程序在运行时(runtime) 可以访问.检测和修改它本身状态或行 ...

  8. java 反射深度克隆_C#使用反射(Reflection)实现深复制与浅复制

    原文路径:https://blog.csdn.net/qq_28839293/article/details/79487294 1.浅复制: class Program { public static ...

  9. Java基础--反射Reflection

    Reflection 反射能在运行时获取一个类的全部信息,并且可以调用类方法,修改类属性,创建类实例. 而在编译期间不用关心对象是谁 反射可用在动态代理,注解解释,和反射工厂等地方. -------- ...

  10. java 反射Reflection;Class类

    1.反射机制概述 java能够反射的前提:已经加载过这个类 反射可以通过类名来寻找这个类的所有相关信息.类似于人类的记忆,事先在记忆中有了这个事物的信息,人就可以通过名字来在记忆中寻找事物的具体信息. ...

最新文章

  1. 【C】printf warning: unknown conversion type character ‘l‘ in format [-Wformat=]
  2. 迈吉客受邀参加《创意中国》, 85%超高支持率晋级年度盛典
  3. python判断值是否为空(亲测)
  4. java 字符串数组连接
  5. 数据结构-图-邻接矩阵-试在邻接矩阵存储结构上实现图的基本操作 matrix_insert_vertex 和matrix_insert_arc-icoding
  6. 众多SEO专家集体盛赞
  7. Python 中如何解决 asyncio 文件描述符最大数量限制问题
  8. 《HTML5 从入门到精通--7.6.3 单元格垂直跨度——rowspan》
  9. SpringMVC3 AnnotationMethodHandlerAdapter与mvc:annotation-driven冲突的解决方案
  10. JavaScript-包装类型
  11. python vue token_Haytham个人博客开发日志 -- Flask+Vue基于token的登录状态与路由管理...
  12. 【平面设计学习】Ai使用心得-扁平化制作
  13. 被关在寝室的某个下午
  14. Windows 常见文件扩展名解释
  15. RCWL-0516微波雷达模块检测人体移动(发光二极管)
  16. Apache Kudo: 1.0版和未来 [session]
  17. 惊闻高中同学因公殉职
  18. 碧桂园出品的机器人,能够代替公司人力吗?
  19. Vue01 | el-autocomplete远程搜索下拉框并实现自动填充
  20. python解包什么意思_python解包用法详解

热门文章

  1. Idea通过svn更新项目失败报 Node remains in conflict
  2. OceanBase 社区版 3.1.3 Docker镜像尝鲜,能错过?不存在的
  3. java StringBuilder用法,用逗号拼接字符串 zhaoqian,sunli,zhouwu
  4. Notion使用详解三Notion小传
  5. 创新工场5位创业者2011创业感悟
  6. 欣欣向荣的Ruby家族
  7. 什么是三层交换机-三层交换机的工作原理和作用
  8. 机房交换机网络测试软件,国内IDC机房带宽测试工具和方案
  9. Office Open XML 的测量单位
  10. sis最新ip地址2020入口一_2020云南高考成绩公布时间最新 云南高考查成绩方式入口大全...