我们开发时常见的情况就是加载数据库驱动程序,考虑到跨数据库需要,有时用mysql,有时用oracle;通过如下的代码实现:
Class c=Class.forName("数据库驱动类全名");
通过驱动类的全类名让JVM在服务器中找到并加载这个类,这个动态性就体现出java的特性了。当程序在运行时,需要动态的加载一些类,这些类可能之前用不到所以不用加载到JVM,只有但用于时加载。
反射(Reflection)是Java中一种强大的特性工具,能够使开发人员很创建灵活的代码,这些代码可以在运行时态装配,不需要在组件与组件之间进行源代码链接。反射工具提供了动态获取类的信息以及动态调用对象的方法的功能。
反射机制主要提供了以下功能:
²在运行时判断任意一个对象所属的类;
²在运行时构造任意一个类的对象;
²在运行时判断任意一个类所具有的成员变量和方法;
²在运行时调用任意一个对象的方法;
²生成动态代理;
Java反射机制的实现要借助于4个类:
²Class,
²Constructor,
²Field
²Method
其中class代表的是类对象,Constructor-类的构造器对象,Field-类的属性对象,Method-类的方法对象,通过这四个对象我们可以粗略的看到一个类的各个组成部分。其中最核心的就是Class类,它是实现反射的基础,
示例:
public class Test {
public static void main(String[] args) throws Exception {
Test t = new Test();
System.out.println(t.getClass().getName());
}
}