Class类

反射库提供了一个丰富且精巧的工具集,可以用来编写能够动态操控Java代码的程序。能够分析类能力的程序称为反射,反射机制功能强大。 Class类 在java运行期间,Java运行时系统始终为所有对象维护一个运行时类型标识。这个信息就会跟踪每个对象所属的类。保存这些信息的类名为Class,可以使用Object类中的getClass方法获取Class类实例。 获取Class类实例的方法 有三种方法可以获…

Modifier类

Class类以及后面将会讲的Field、Constructor、Method类都有一个getModifiers方法。该方法返回一个修饰符值,类型为int,不同的bit修饰符表示不同的含义。然后通过Modifier类的一些方法配合该修饰符可以获取到许多有用的信息。 下面展示Modifier类的一些常用方法(下面都是静态方法): String toString(int modifiers) 返回一个字…

创建运行时类的对象

通过Class类构造实例 如果有一个Class类型的对象,可以用它newInstance方法构造一个实例。 public static void main(String[] args) throws IllegalAccessException, InstantiationException { Class eClass = Employee.class; Employee employee = …

Field类

对任意的一个Object实例,只要我们获取了它的Class,就可以获取它的一切信息。 我们先看看如何通过Class实例获取字段信息。Class类提供了以下几个方法来获取字段: Field getField(name):根据字段名获取某个public的field(包括父类) Field getDeclaredField(name):根据字段名获取当前类的某个field(不包括父类) Field[] …

Method类

获取Method信息 我们已经能通过Class实例获取所有Field对象,同样的,可以通过Class实例获取所有Method信息。Class类提供了以下几个方法来获取Method: Method getMethod(name, Class…):获取某个public的Method(包括父类) Method getDeclaredMethod(name, Class…):获取当前类的某个Met…

动态代理

代理模式(Proxy)为其他对象提供一种代理以控制对这个对象的访问。使用代理模式创建代理对象,让代理对象控制目标对象的访问(目标对象可以是远程的对象、创建开销大的对象或需要安全控制的对象),并且可以在不改变目标对象的情况下添加一些额外的功能。 代理分为静态代理以及动态代理,在学习完反射后,就可以完成动态代理。 动态对象 要想创建一个代理对象,需要使用Proxy类的newProxyInstance方…