反射

概念:Java反射是可以让我们在运行时获取类的方法,属性,父类,接口等class内部信息的机制。通过反射我们还可以在运行期实例化对象,调用方法,通过调用get/set方法获取变量的值,即使方法或属性是私有的也可以通过反射的形式调用。
使用场景:
(1)编译时我们对于类的内部信息不可知,必须得到运行时才能获取类的具体信息。
(2)要使用的类在运行时才会确定,这个时候我们不能在编译期就使用它,因此只能通过反射的形式来使用在运行时才存在的类。
获取类的class对象的方式(三种):
(1)类名.class;

1

(2)对象.getClass();

Paste_Image.png

(3)class.forName("类的全名");

Paste_Image.png

通过Class类型来构造目标类型的对象:
(1)先拿到目标类型class对象。
(2)拿到目标类型的构造方法。
(3)调用Constructor.newInstance()。
Tips:在调用方法之前,Method.setAcessible(true)可以掠过Java语言检查。
反射获取方法:
(1)getDeclaredMethod()和getDeclaredMethods()获取的是自身中定义的函数,从父类中集成的函数不能够获取到。
(2)getMethod()和getMethods()获取的是当前类及其父类的public方法。
反射获取属性:
(1)getDeclaredField()和getDeclaredFields()获取的是在自身中定义的所有属性(public ,protected,private,default),从父类继承的属性不能获的。
(2)getFields()和getField()获取的是自身及其父类中的public属性。
反射获取父类和接口:
反射获取注解信息:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容