Java的反射

JAVA反射机制是在运行状态中,对于任意一个实体类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。Reflection(反射)是Java被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的內部信息,并能直接操作任意对象的内部属性及方法。Reflection中处理的是Class对象。

获取Class对象有三种方式;

第一种对象直接调用getClass()方法


通过对象获取


输出结果

第二种通过类名获取


通过类名获取


输出

第三种通过全类名获取


全类名获取


Class的常用方法 ,参考:https://blog.csdn.net/weixin_42749765/article/details/87277826

获取类中所有公共方法和方法中的参数类型


获取类所有方法和方法参数类型


输出结果

在Class类中有getMethods方法和getDeclaredMethods()方法,他们也是有区别的 ;

getMethods():该方法是获取本类以及父类或者父接口中所有的公共方法(public修饰符修饰的)

getDeclaredMethods():该方法是获取本类中的所有方法,包括私有的(private、protected、默认以及public)的方法

通过java反射获取类种的固定方法并运行该方法获取返回值。

全类名的方式获取Class对象,getMethod获取固定方法,第一个参数是方法名,第二个参数是方法的参数类型。返回一个Method对象,newInstance创建一个实例。invoke执行该方法,第一个参数是类的实例,后面的参数则是方法传入的参数。如果是私有方法还需在调invoke时加上 method.setAccessible(true);


moneyGb输出金额大写结果

获取类中变量名称,Class类中的getDeclaredFields方法可以获取类中的变量对象,



获取类变量


输出变量名称和类型

也可以通过FIeld对象的set和get方法赋值或取值;

这只是一些java反射的一些基本方法的了解,更多的实际应用还是需要我们去实际项目中去应用学习。

你可能感兴趣的:(Java的反射)