Welcome 微信登录

首页 / 软件开发 / JAVA / Java Reflection API简介

Java Reflection API简介2011-11-02Java Reflection API提供对JVM中的类,接口和对象的深入洞察。开发者通常使用API来完成以下的任务,这解释了为什么总是使用开发工具,例如debugger和Integrated Development Environments (IDEs):

· 决定一个对象的类。

· 获得关于一个类的modifiers, fields, methods, constructors, etc的信息。

· 获得关于一个接口的常量和方法声明。

· 创建一个类的instance,这个类的名字直到运行时才知道,而且在设计时间时可用或是作为一个运行参数被提供。

· 获得并设置一个对象的field值,即使field的名字直到运行时程序才会知道。

· 调用一个对象上的方法,即使这个方法直到运行时才会知道。

Reflection的具体使用是在JavaBeans中,这里你可以通过一个构建工具来操作软件组件。工具使用reflection来获取Java 组件(类)的属性,因为它们是动态加载。

使用Reflection检索Class Behavior

为了了解你如何使用Reflection来确定一个类行为,考虑以下Employee class的简单例子:

 public class Employee   {  public String empNum;  public String empName;  public Employee()  {  this( "1", "King");  }  public Employee(String empNum, String empName)  {  empNum = empNum;  empName = empName;  }  public String toString()  {  return "Employee Details: EmpNumber: " + empNum + ",  EmpName: "+ empNum;  }  }  import java.lang.reflect.Modifier;  public class AnalyzeClass  {  public static void main(String[] args)  {  Employee employee = new Employee();  Class klass = employee.getClass();  System.out.println( "Class name: " + klass.getName());  System.out.println(  "Class super class: " + klass.getSuperclass());  int mods = klass.getModifiers();  System.out.println(  "Class is public: " + Modifier.isPublic(mods));  System.out.println(  "Class is final: " + Modifier.isFinal(mods));  System.out.println(  "Class is abstract: " + Modifier.isAbstract(mods));  }  }