java反射机制使在编译时不需要知道类(classes),方法(method)的名称,而在运行时可以检查类、接口、属性和方法成为可能,使用反射机制也可以实例化一个对象,调用方法、设置获取属性值等。
java反射机制相当实用和强大。例如,像Butterfly Persistence一样在运行时将数据库的表映射到java对象,或者像Butterfly Container一样,当解析配置脚本时,在运行时映射脚本语言语句到实际对象的方法。
这个教程将会比我所阅读过的教程更深入的讲解java反射机制。本教程会介绍java反射机制的基础,包括array,annotations,generics如何工作,动态代理、动态类加载和重载。也会展示如何使用的具体实例,比如读取一个类的所有get方法,或者访问一个类的私有属性和方法。本教程也会澄清一些关于什么样的通用信息在运行时可以得到的混淆。一些人声称所有的泛型信息在运行时都丢失了,这不正确。
本教程基于java 6版本讲述。
Java反射机制实例,这个实例快速展示了如何使用java反射机制
Method methods = MyObject.class.getMethods();
for (Method method : methods)
{
System.out.println("method = " + method.getName());
}
这个例子包括类MyObject的类对象,使用这个类对象得到了这个类的方法列表,迭代方法列表并答应每个方法的名称。
具体这是怎么工作的,接下来会详细介绍。
目录