技术开发 频道

实例讲解:java reflection 发射机制

  【IT168 技术】Reflection 是 Java 程序开发语言的特征之一,它允许运行中的 Java 程序对自身进行检查,或者说“自审”,并能直接操作程序的内部属性。例如,使用它能获得 Java 类中各成员的名称并显示出来。

  Java 的这一能力在实际应用中也许用得不是很多,但是在其它的程序设计语言中根本就不存在这一特性。例如,Pascal、C 或者 C++ 中就没有办法在程序中获得函数定义相关的信息。

  JavaBean 是 reflection 的实际应用之一,它能让一些工具可视化的操作软件组件。这些工具通过 reflection 动态的载入并取得 Java 组件(类) 的属性。

  1. 一个简单的例子

  考虑下面这个简单的例子,让我们看看 reflection 是如何工作的。

  import java.lang.reflect.*;
  
public class DumpMethods {
  
public static void main(String args[]) {
  
try {
  Class c
= Class.forName(args[0]);
  Method m[]
= c.getDeclaredMethods();
  
for (int i = 0; i < m.length; i++)
  System.out.println(m[i].toString());
  }
catch (Throwable e) {
  System.err.println(e);
  }
  }
  }

  按如下语句执行:

  java DumpMethods java.util.Stack

  它的结果输出为:

  public java.lang.Object java.util.Stack.push(java.lang.Object)
  
public synchronized java.lang.Object java.util.Stack.pop()
  
public synchronized java.lang.Object java.util.Stack.peek()
  
public boolean java.util.Stack.empty()
  
public synchronized int java.util.Stack.search(java.lang.Object)

  这样就列出了java.util.Stack 类的各方法名以及它们的限制符和返回类型。

  这个程序使用 Class.forName 载入指定的类,然后调用 getDeclaredMethods 来获取这个类中定义了的方法列表。java.lang.reflect.Methods 是用来描述某个类中单个方法的一个类。

0
相关文章