快速业务通道

Java Reflection API简介 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14
public boolean java.util.Stack.empty()   public synchronized java.lang.Object java.util.Stack.peek()   public synchronized int java.util.Stack.search(java.lang.Object)

在上面的结果中列出了所有java.util.Stack class的方法。Method 是在java.lang.reflect中的一个类,负责产生这个结果。

Java Reflection API简介(3)

时间:2011-11-02

使用Reflection检索Attributes

一个类有其他的一些实体,除了迄今为止你看到的那些。变量怎么样,举个例子?你可以使用reflection来获取这些实体的具体输出。这里是使用一个Field class的另一个例子:

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

当你编译这个代码的时候并用Employee的一个argument执行它…

  java DumpFields Employee

你得到以下的结果:

         public java.lang.String Employee.empNum 
  public java.lang.String Employee.empName

这个结果列出所有属于该类的fields和ttributes。

使用Reflection检索Constructors

这个Constructor类的例子将帮助完成对各种constructors运用的理解,以及如何使用它们。

      import java.lang.reflect.*; 
  public class DumpConstructors {
  public static void main(String args[])
  {
  try {
  Class c = Class.forName(args[0]);
  Constructor[] constructor = c.getConstructors();
  for (int i = 0; i < constructor.length; i++)
  {
  System.out.println(constructor[i].toString());
  //To print the parameter types
  Class pvec[] = constructor[i].getParameterTypes();
  for (int j = 0; j < pvec.length; j++)
  System.out.println("param #" + j + " "
  + pvec[j]);

  }
  }
  catch (Throwable e) {
  System.err.println(e);
  }
  }
  }

Java Reflection API简介(4)

时间:2011-11-02

当你编译这个代码的时候并用Employee的一个argument执行它…

  javac DumpConstructors Employee

…你得到以下的结果:

         public Employee(java.lang.String,java.lang.String) 
  param #0 class java.lang.String
  param #1 class java.lang.String
  public Employee()

分析结果的时候你会发现Employee类有两个constructor。第一个是带参数的constructor(你也可以看到参数类型)。第二个没有采用任何参数,结果是不言而喻的。

使用Reflection在运行时执行Class Methods

假设你有一个类并想要在运行的时候使用它。下列代码显示你如何加载这个类并在运行时执行一个所期望的方法。这里假设的是那个方法的名字是setProperties而且采用java.util.Properties类型的一个argument。

  Class newClass = null; 
  Method getInstanceMethod = null;
  Properties prop = new Properties();
  prop.put("argName", "argValue");
  try
  {
  Object obj = newClass.newInstance();
  getInstanceMethod = newClass.getMethod("setProperties",
  new Class[]{new Properties().getClass()});
  }
  catch (Exception ex)
  {

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号