当前位置:首页 » 编程博文
开发技术指南» 文章正文
    引言: Java Reflection (JAVA反射) 作者: corlin 日期: 04-05-10 10:32 点击数: 748 Reflection 是 Java 程序开发语言的特征之一,它允许运行中的 Java 程序对自身进行检查,或者说“自审”,并能直接操作程序的内部...
 

 

 ·密码丢了怎么办    »显示摘要«
    摘要:提起windows 2000密码丢失,确实是件令人头痛的事了,不管是自己不小心忘了密码也好,被别人恶意修改也好,一般都是重装系统,不但浪费时间,而且可能自己辛辛苦苦存储的资料也随之烟消云散。其实用户不小心忘记了密码,造成无法登录windows 2000 时,不必重装系统也能恢复密码。原理是删除windows 2000存储用户密码的sam文件,使密码为空。如果windows 2000用的fat32分......
    摘要: 一、当前用户专有的启动文件夹 这是许多应用软件自动启动的常用位置,windows自动启动放入该文件夹的所有快捷方式。用户启动文件夹一般在:\documents and settings\<用户名字>\「开始」菜单\程序\启动,其中“<用户名字>”是当前登录的用户帐户名称。 二、对所有用户有效的启动文件夹 这是寻找自动启动程序的第二个重要位置,不管用......


Java Reflection (JAVA反射)

java reflection (java反射)   

 作者:  corlin 【程序编程相关:简化m文件转化为c/c++文件,VC编译

【推荐阅读:我的收藏夹

 日期:  04-05-10 10:32 【扩展信息:2004-11-8

 点击数:  748   

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 是用来描述某个类中单个方法的一个类.

2.开始使用 reflection

用于 reflection 的类,如 method,可以在 java.lang.relfect 包中找到.使用这些类的时候必须要遵循三个步骤:第一步是获得你想操作的类的 java.lang.class 对象.在运行中的 java 程序中,用 java.lang.class 类来描述类与接口等.

下面就是获得一个 class 对象的方法之一:

class c = class.forname("java.lang.string");

这条语句得到一个 string 类的类对象.还有另一种方法,如下面的语句:

class c = int.class;

或者

class c = integer.type;

它们可获得基本类型的类信息.其中后一种方法中访问的是基本类型的封装类 (如 integer) 中预先定义好的 type 字段.

第二步是调用诸如 getdeclaredmethods 的方法,以取得该类中定义的所有方法的列表.

一旦取得这个信息,就可以进行第三步了——使用 reflection api 来操作这些信息,如下面这段代码:

class c = class.forname("java.lang.string");


...   下一页
    摘要:◆页面(draw3.aspx)<%@ page language="c#" codebehind="draw3.aspx.cs" autoeventwireup="false" inherits="ctest.draw3" %><!doctype html public "-//w3c//d......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE