Java反射技术原理与用法实例分析
本文实例讲述了Java反射技术原理与用法。分享给大家供大家参考,具体如下:
本文内容: 产生反射技术的需求 反射技术的使用 一个小示例首发日期:2018-05-10
产生反射技术的需求: 项目完成以后,发现需要增加功能,并且希望增加功能并不需要停止项目运行。 在希望不关停项目运行的情况下,于是考虑到将功能都放到一个单独的项目之外的模块中,每一个功能实现都从这个模块中获取【实际上这个考虑应该是项目开始前就考虑,这个例子可能不是很好】。于是就有了反射的产生。(这种思想有点类似工厂模式,如果学过设计模式的话就明白为什么要做的”开放“)一个帮助理解例子:一个网站有计算器功能,刚开始他们只有加减乘除的计算,后来他们决定增加上求乘方、求根号的计算,他们通过“关停网站后修改源代码“来增加上他们需要的功能。第二次,他们加上xx功能,他们还是关停网站加功能。。。。后来他们发现应该把这个”功能模块“独立出来,任何功能实现都通过读取这个文件来实现,比如想要实现乘方功能就需要查看这个模块中是否定义了乘方功能。另外,将它独立出来后,它一个模块并不影响整个板块的功能。
【上面的例子中,其他板块如果想要知道独立的模块的内容(属性、方法),那么就要利用到反射技术,反射技术可以使程序在运行时解析外部对象的信息。】
PS:
上面的例子有点像某系统从数据库中读取资料,把资料固定到代码中显然是一个很不明智的行为,把数据存到数据库中,再利用SQL语句(类比反射技术)从数据库中读取数据就降低了代码之间的耦合。 如果你希望将这个模块有一个名词解释的话,可以把它称为”配置文件“,有什么功能都可以读取配置文件来获取。下面就是讲怎么从外部的”配置文件“中读取具有什么属性和功能了。如果你已经了解了 为什么需要反射,那么你可以继续向下了,如果不了解,那么你可能需要了解更多再深入。
反射的使用: 反射技术是一种动态语言的技术,它可以动态的获取类以及类中的成员,并可以调用该类成员。获取外部字节码文件中的类: 对于内部的类,获取该类的对象时我们可以使用new










getDeclaredMethod(方法名, 参数类型列表):获取不论public还是非public的指定名的方法【用来获取私有的方法】
getDeclaredMethods():获取不论public还是非public的方法
然后使用Method对象操作:
非静态方法调用:Method对象.invoke(对象名,对象名…)
静态方法调用:Method对象.invoke(null)

更多java相关内容感兴趣的读者可查看本站专题:《Java面向对象程序设计入门与进阶教程》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。
相关文章:
1. 正则表达式匹配${key}并在Java中使用的详细方法2. IntelliJ IDEA删除类的方法步骤3. python 解决pycharm运行py文件只有unittest选项的问题4. 详解springBoot启动时找不到或无法加载主类解决办法5. Python解释器及PyCharm工具安装过程6. JAVA教程:解析Java的多线程机制(1)7. Python通过fnmatch模块实现文件名匹配8. 关于python中readlines函数的参数hint的相关知识总结9. Android Studio 4.0 正式发布在Ubuntu 20.04中安装的方法10. iOS中各种UI控件属性设置示例代码
