java的反射机制

2023-10-26

             Java的反射机制

1.定义
指程序可以访问、检测并修改本身的状态或行为的一种能力,并能根据自身行为的状态和结果调整或修改应用所描述行为的状态和相关的语义。简单来说,就是一种能自我修正的机制。
2.意义
首先,反射机制极大的提高了程序的灵活性和扩展性,降低模块的耦合性,提高自身的适应能力。其次,通过反射机制可以让程序创建和控制任何类的对象,无需提前硬编码目标类。再次,使用反射机制能够在运行时构造一个类的对象、判断一个类所具有的成员变量和方法、调用一个对象的方法。最后,反射机制是构建框架技术的基础所在,使用反射可以避免将代码写死在框架中。
3.特点
尽管反射机制带来了极大的灵活性及方便性,但反射也有缺点。反射机制的功能非常强大,但不能滥用。在能不使用反射完成时,尽量不要使用,原因有以下几点:①性能问题。Java反射机制中包含了一些动态类型,所以Java虚拟机不能够对这些动态代码进行优化。因此,反射操作的效率要比正常操作效率低很多。我们应该避免在对性能要求很高的程序或经常被执行的代码中使用反射。而且,如何使用反射决定了性能的高低。如果它作为程序中较少运行的部分,性能将不会成为一个问题。②安全限制。使用反射通常需要程序的运行没有安全方面的限制。如果一个程序对安全性提出要求,则最好不要使用反射。③程序健壮性。反射允许代码执行一些通常不被允许的操作,所以使用反射有可能会导致意想不到的后果。反射代码破坏了Java程序结构的抽象性,所以当程序运行的平台发生变化的时候,由于抽象的逻辑结构不能被识别,代码产生的效果与之前会产生差异。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java的反射机制 的相关文章

  • 读《洞穴奇案》——旧文人的愚民术

    忙了快一周多 一直没有抽出时间继续阅读本书 今天终于草草的阅读完了一章 这章讲的是法律与民意之间的关系 更深入地讲 法律是否真正的表达了民意 而再发问 这个民意到底指的是谁的意图 这种意图是发自内心的还是屁股决定脑袋 如果我们以最善意观点去
  • 《人工智能狂潮》读后感——什么是人工智能?(一)

    从本专栏开始 作者正式研究Python深度学习 神经网络及人工智能相关知识 前一篇文章详细讲解了无监督学习Autoencoder的原理知识 然后用MNIST手写数字案例进行对比实验及聚类分析 本篇文章将分享 人工智能狂潮 书籍内容 包括人工
  • 《Android 开发艺术探索》笔记1--Activity的生命周期和模式

    文章目录 Activity的生命周期和模式思维导图 Activity的生命周期 异常情况下的生命周期 当系统配置发生改变的时候 禁止异常重建Activity Activity的启动模式 Activity的Flags IntentFilter
  • 富爸爸穷爸爸

    有意思的观点 1 贫穷和破产的区别 破产是暂时的 而贫穷是永久的 2 我们听说过穷人买彩票中奖的故事 他们一下子暴富起来 但不久又变穷了 还有关于职业运动员的故事 有一个运动员在24岁的时候 一年就挣了几百万美元 但到了34岁的时候却露宿桥
  • 《魔童降世》影评——从封神演义谈到宿命

    今日看完魔童降世中的哪吒 不得不称赞这次改编很精妙 也不得不说编剧的三观很正 哪吒在我们大多数人的心中可能是纯真无害的小孩子 生来便拥有法宝乾坤圈和混天绫 得遇名师太乙真人 修得神通三头六臂 坚持正义 帮助武王伐纣 灭石叽 最后肉身 莲花
  • cuda编程学习笔记 第一章 introduction

    准备系统学习cuda知识 这一章基本都懂 记录一下一些细节 global 表示函数在device上 后面永远是void device function is asynchromous cudaDeviceSynchronize waits
  • cuda编程学习笔记 第二章 cuda memory management

    应用的性能可能有 75 都花费在内存相关问题上 NVPROF and NVVP 这俩是调试工具 不知道是不是基于CUPTI CUDA Profiler Tools Interface NVPROF是命令行工具 nvvp是可视化工具 nvvp
  • 做你自己

    2017 03 06 2017 03 10将彼得 巴菲特的书籍 做你自己 个股神巴菲特送给儿子的人生礼物 读完了 感受颇深 沃伦 巴菲特的名言 出生时嘴里含着的金汤匙 最后可能会变成扎在背上的金匕首 考虑不周的赠与会浇灭一个人的雄心并枯竭他
  • 读书笔记2

    深度学习入门 基于Python的理论与实现 高清中文版 pdf 1 python基础 numpy matplotlib Batch Normalization Dropout Adam 图像识别 自然语言处理 语音识别 不闻不若闻之 闻之不
  • 《Android 开发艺术探索》笔记7--RemoteViews的内部机制和意义

    RemoteViews的内部机制和意义思维导图 RemoteViews的内部机制 RemoteViews的意义可以模拟一个通知栏效果并实现跨进程的UI更新 参看文章 RemoteViews的内部机制和意义思维导图 RemoteViews的内
  • 深度学习框架Pytorch快速开发与实践

    决定用两个星期读完这本书 并自己用Pytorch搭建一个模型 2019 8 5 第一章深度学习介绍 明确学习目标 深度学习难点不是深度学习本身 难的是你要吃透问题 如何用深度学习的逻辑去思考你自己的问题 有针对性地设计模型 难的是你有分析问
  • 从瀑布到敏捷——漫画解读软件开发模式变迁史

    网址 https www tapd cn forum view 36971 从文章中可知 1 瀑布模型 将客户隔绝在外并按顺序逐一完成的模式 从时间上来说 只有等上一交付件完成了 下一阶段才能开始是一种浪费 特点 文档驱动 单道生产 2 敏
  • 《曾国藩家书》读书手记(修身篇一)

    曾国藩被章太炎评价为 誉之则圣相 谳之则元凶 为什么有这样的评价呢 我们可以看出曾国藩这个人褒贬不一 不过毛和蒋对于曾国藩都是推崇备至 毛说过 吾近于人 独服于曾国藩 看来曾国藩还是有可取之处的 尤其是他的家书 很多人评价甚高 一 修身篇
  • 软件开发十本书

    几年前 总结了 软件测试十本书 对从事软件质量验证和确认工作的基础知识进行简介 软件花钱最多 耗时最长 投入人力和精力最大的 是在开发过程 根据个人经验 推荐软件开发相关的十本书 供入门和进阶参考 坐等拍砖员 1 代码大全 软件开发世界的
  • 《学会提问》-批判性思维

    这本书名为学会提问 但实际内容是讲解如何训练批判性思维能力 如何通过提问 来质疑别人的观点 选择正确的论证 来形成自己的理性决策 批判性思维的最终结果就是要求一个人虚怀若谷地接纳各种观点 理性评判这些观点 然后在理性判断的基础上决定采取哪些
  • 未来简史--读书语句摘录及感悟

    文章目录 摘录 个人感想 摘录 18世纪末的英国哲学家边沁主张 所谓至善就是 为最多人带来最大的快乐 并认为国家 市场和科学界唯一值得追寻的目标就是提升全球的快乐 政治家应该追求和平 商人应该促进繁荣 学者应该研究自然 但不是为了荣耀什么国
  • 《疯狂Java讲义》读书笔记(一)

    面向对象具有三个基本特征 封装 Encapsulation 继承 Inheritance 和多态 Polymorphism 继承是面向对象实现软件复用的重要手段 当子类继承父类 子类作为一个特殊的父类 将获得父类所有的属性和方法 封装是指将
  • 汇编语言(第三版)读书笔记 2 - 第2章 寄存器

    第2章 寄存器 前一章所说的总线 相对于CPU内部来说是外部总线 内部总线实现了CPU内部各个器件 运算器 控制器 寄存器 之间的联系 外部总线实现了CPU和主板上其他器件的联系 不同的CPU 寄存器的个数 结构是不相同的 8086 CPU
  • 【华为数据之道学习笔记】5-5结构化数据入湖

    结构化数据是指由二维表结构来逻辑表达和实现的数据 严格遵循数据格式与长度规范 主要通过关系型数据库进行存储和管理 触发结构化数据入湖的场景有两种 第一 企业数据管理组织基于业务需求主动规划和统筹 第二 响应数据消费方的需求 结构化数据入湖过
  • 【华为数据之道学习笔记】5-9图模型设计

    图模型作为当前流行的信息处理加工技术 自提出以来 迅速在 学术界和工业界得到了普及 在智能推荐 决策分析等方面有着广泛的应用 图模型由节点和边组成 节点表示实体或概念 边则由属性或关 系构成 实体指的是具有可区别性且独立存在的某种事物 如某

随机推荐

  • STM32的RTC时钟配置

    STM32的时钟可以使用内部RTC产生时钟日历 也可以使用外部芯片产生更为精确的时钟 如DS3231时钟芯片 本文介绍使用内部RTC产生时钟 RTC的时钟源有以下三种 HSE时钟除以128 LSE振荡器时钟
  • java reference variable,Java中的Object,Reference ID和Reference Variable之间有什么区别?

    What is difference between the following in java Object Reference ID Reference Variable When I see statements like this
  • xml转json的两种方法

    1 第一种方法 使用JSON JAVA提供的方法 之前一直使用json lib提供的方法转json 后来发现了这个开源项目 觉得用起来很不错 并且可以修改XML java中的parse方法满足自己的转换需要 1 首先去git下载所需的jav
  • Golang#Typora-Golang笔记

    知名编程语言或系统的发展简史 一 B语言 B语言之父 Ken Thompson 肯 汤普森 B语言是贝尔实验室开发的一种通用的程序设计语言 它是于1969年前后Ken Thompson 肯 汤普森 在Dennis Ritchie丹尼斯 里奇
  • SSM框架学习(4)CRM项目物理模型设计

    1 CRM的表结构 tbl user 用户表 tbl dic type 数据字典类型表 tbl dic value 数据字典值 tbl activity 市场活动表 tbl activity remark 市场活动备注表 tbl clue
  • C++ 11 std::enable_shared_from_this

    C 11 std enable shared from this 一 介绍 1 申明 std enable shared from this template lt class T gt class enable shared from t
  • JavaScript中的对象解释--访问对象属性、遍历属性for in、检测属性是否存在的方法...

    文章目录 目录 文章目录 1 对象访问属性 2 遍历 枚举 属性for in 3 检测属性是否存在的方法 4 模板字符串 反引号 二 总结 一 对象 1 对象访问属性 1 格式 对象 属性名 或对象 属性名 2 自定义对象 属性名 属性值
  • Ubuntu下使用微信

    介绍 由于微信官网 微信 是一个生活方式 没有linux版本的下载和安装方法 但微信确实提供了优麒麟发行版的官方版本 所以就有了下面的安装方法 安装方法 方法一 打开优麒麟应用商店官网微信微信作为一款国民级APP 已经成为我们日常生活中不可
  • flutter 渐变色

    flutter 颜色渐变 Positioned fill 使用绝对定位可全局渐变 可不用 child Container decoration BoxDecoration gradient LinearGradient 渐变位置 begin
  • 如何快速转载CSDN中的博客

    前言 对于喜欢逛CSDN的人来说 看别人的博客确实能够对自己有不小的提高 有时候看到特别好的博客想转载下载 但是不能一个字一个字的敲了 这时候我们就想快速转载别人的博客 把别人的博客移到自己的空间里面 当然有人会说我们可以收藏博客啊 就不需
  • Hyperledger Fabric 网络搭建详解

    写在前面 博主也是因为一些原因刚刚入坑区块链 我认为在我们入门新技术的时候 入门总是最困难的部分 只要入门了 后面学习起来就会越来越轻松 在网上找了很多文章 我觉得大多条理不是很清楚 本文章会详细介绍fabric v1 0 环境部署 以及在
  • 网络安全(黑客)自学笔记

    前言 作为一个合格的网络安全工程师 应该做到攻守兼备 毕竟知己知彼 才能百战百胜 计算机各领域的知识水平决定你渗透水平的上限 1 比如 你编程水平高 那你在代码审计的时候就会比别人强 写出的漏洞利用工具就会比别人的好用 2 比如 你数据库知
  • 用非阻塞的 socket connect

    呵呵 原来有人碰到跟我一样的问题 引用如下 这是网址 http cache baidu com c m 9f65cb4a8c8507ed4fece763104c8c711923d030678197027fa3c215cc79031c1d3a
  • pycharm中不能使用anaconda中包含的库的解决办法

    参考在pycharm中使用Anaconda之后 自己记录下来 防止以后找不到 1 打开pycharm 2 选择菜单栏中的file 文件 中的settings 设置 找到project后 选中project interpreter 点击右边的
  • Android读取设备内存大小

    获取系统运行内存 RAM 大小 public static String getRAMTotalMemorySize final Context context 获得ActivityManager服务的对象 ActivityManager
  • python新手怎么兼职-自学python可以做什么兼职

    很多朋友都会说 我身边有朋友或者同学是做程序员的 但是他们具体的工作内容 其实很多人是不了解的 这几年随着一些影视作品的出现 里面的主演有的从事开发工程师 大家初步有了一个印象 如果我不想去公司坐班 自己通过这个技能怎么来赚钱 推荐学习 P
  • 解决Unreal Engine 4.7.6的DerivedDataCache在C盘疯狂膨胀的问题

    打开 YourEngineFolder Engine Config BaseEngine ini 将 1 Local Type FileSystem ReadOnly false Clean false Flush false PurgeT
  • cnpm安装步骤

    安装nodeJS 官网下载 http nodejs cn download 选择其他版本下载地址 https nodejs org zh cn download releases 选版本点击下载 然后下载后缀名为msi 因为安装简单 选择好
  • 推荐学习方法——费曼技巧,以教促学,教学相长

    1 说到费曼技巧先来了解一下费曼这个人 费曼 全名理查德 费曼 美国著名物理学家 于1965年获得诺贝尔物理奖 在沉迷于美妙的物理世界的同时 他还热衷于教育事业 喜欢向人们深入浅出的讲解艰深的物理知识 在他的自传里 他提到曾纠结于某篇艰深的
  • java的反射机制

    Java的反射机制 1 定义 指程序可以访问 检测并修改本身的状态或行为的一种能力 并能根据自身行为的状态和结果调整或修改应用所描述行为的状态和相关的语义 简单来说 就是一种能自我修正的机制 2 意义 首先 反射机制极大的提高了程序的灵活性