Java基础之反射

Posted 时间的朋友

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java基础之反射相关的知识,希望对你有一定的参考价值。

Java反射是指运行时获取类信息,进而在运行时动态构造对象、调用对象方法及修改对象属性的机制。百度百科的定义:“JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。

一、反射的用途

Java的反射机制可以做3件事:运行时创建对象、运行时调用方法、运行时读写属性。进而实现以下功能:
调用一些私有方法,实现黑科技。比如双卡短信发送、设置状态栏颜色、自动挂电话等。

实现序列化与反序列化,比如PO的ORM,Json解析等。

实现跨平台兼容,比如JDK中的SocketImpl的实现。

通过xml或注解,实现依赖注入(DI),注解处理,动态代理,单元测试等功能。比如Retrofit、Spring或者Dagger。

二、Java反射的优缺点

优点: 

(1)能够运行时动态获取类的实例,大大提高系统的灵活性和扩展性。 
(2)与Java动态编译相结合,可以实现无比强大的功能 

缺点: 
(1)使用反射的性能较低 
(2)使用反射相对来说不安全 
(3)破坏了类的封装性,可以通过反射获取这个类的私有方法和属性 

三、Java反射的用法

主要反射API,用来生成在当前JAVA虚拟机中的类、接口或者对象的信息。

●Class类:反射的核心类,可以获取类的属性,方法等内容信息。

●Field类:Java.lang.reflect.表示类的属性,可以获取和设置类的中属性值。

●Method类:Java.lang.reflect。表示类的方法,它可以用来获取类中方法的信息或者执行方法

Construcor类:Java.lang.reflect。表示类的构造方法。

使用步骤:

●获得想操作类的Java.lang.Class对象
●调用Class的方法
●使用反射API来操作这些信息

 

以上是关于Java基础之反射的主要内容,如果未能解决你的问题,请参考以下文章

java基础之----反射

Java基础之反射

Java基础之反射

Java基础之反射

Java基础之—反射

Java基础之—反射