java-反射

1

关于定义

JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

Java反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代理。

2

关于应用场景

在Java程序中许多对象在运行是都会出现两种类型:编译时类型和运行时类型。 

编译时的类型由声明对象时实用的类型来决定,运行时的类型由实际赋值给对象的类型决定 

3

关于类型类

类型类指的是代表一个类型的类

一般情况下,getclass()方法和class()方法是等价的,都可以获得一个类型名

区别:

两者最直接的区别就是,getClass()是一个类的实例所具备的方法,而class()方法是一个类的方法。

另外getClass()是在运行时才确定的,而class()方法是在编译时就确定了

4

Class:类型类

类型类指的是代表一个类型的类

一般情况下,getclass()方法和class()方法是等价的,都可以获得一个类型名

区别:

两者最直接的区别就是,getClass()是一个类的实例所具备的方法,而class()方法是一个类的方法。

另外getClass()是在运行时才确定的,而class()方法是在编译时就确定了

5

关于方法

getDeclaredField(name)/获取指定私有name的属性

getField(name)/获取指定name的属性

getName()/获取类属性名称[String name]->[name]

getType()/获取类属性类型[String name]->[java.lang.String]

Field.setAccessible(field[], true);/设置所有的私有属性可访问/忽略java检查

field.setAccessible( true);/设置指定的私有属性忽略java检查

getFields()/获取所有属性

getDeclaredMethods()/取得obj类中自己定义的方法, 包括私有的方法

getMethods()/取得obj类中自己定义的方法及继承过来的方法, 但私有方法得不到

6

关于accessibleobject


7

关于PropertyDescriptor:


8

关于demo: 

如下连接[demo,需要下载]:实现了一个操作前后不同的对比,通过java反射实现:

https://download.csdn.net/download/zjc_jia/10311056


猜你喜欢

转载自blog.csdn.net/zjc_jia/article/details/79823933