反射机制的问题?

genius0182 2006-02-26 08:44:39
哪位知道反射的机制是怎么的,具体点?
...全文
236 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
skycncomp 2006-02-28
  • 打赏
  • 举报
回复
招聘
java工程师
java jsp servlet spring hibernate js css
上面会一部分既可

qq 283765999
地点:北京
superman421 2006-02-28
  • 打赏
  • 举报
回复
java是解释性的语言,所以它具有传统语言不具有的动态性。
java的反射机制就是建立在这个之上的。
具体要知道如何解析字符串,如何调用方法,那你只有去看源码了。
Tomcat4 2006-02-28
  • 打赏
  • 举报
回复
反射是JAVA支持的元数据的特性
treeroot 2006-02-28
  • 打赏
  • 举报
回复
jf
panzi667 2006-02-27
  • 打赏
  • 举报
回复
楼上的几位说的够全的咯
infowain 2006-02-27
  • 打赏
  • 举报
回复
主要是通过java.lang.reflect包里面的类来完成的,
包括得到类的属性,方法,方法的参数
以及同通过方法的名称来调用方法(invoke)
剑事 2006-02-27
  • 打赏
  • 举报
回复
其实就是通过字符名调用类或方法
interpb 2006-02-27
  • 打赏
  • 举报
回复
就是根据类的Class的对象可以得到类的所有的信息

包括构造函数,方法,属性,所有的父类,接口

想知道的都可以得到
crazycy 2006-02-27
  • 打赏
  • 举报
回复
反射类似于c中的指针,有时可以编写出十分简介的代码,主要是可以写出通用的代码(个人使用过程中感觉),因为reflect最主要是通过invoke方法调用类中的一个方法,那么当你不明确需要调用类中的哪个方法的时候(也就是调用的方法需要通过参数传递)时可以通过调用它来达到目的,这样只要固定一个类,调用方法只需要外界传入方法名就可以了。具体例子一般书上都有,下面简单列一个,希望对你有帮助:
Class[] para1 = new Class[2];
para1[0] = Class.forName("aaaaaaa");
para1[1] = Class.forName("bbbbbbb");

Class myclass1 = Class.forName("cccccccc");
Method mymethod1 = myclass1.getMethod("aaaaaa",para1);
Object args1[] = {obj1, obj2};
cccccccc c = (cccccccc)mymethod1.invoke(myclass1.newInstance(),args1);

genius0182 2006-02-27
  • 打赏
  • 举报
回复
反射的工作原理.
tomuno 2006-02-27
  • 打赏
  • 举报
回复
利用java反射机制获得修饰符

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
public class Test {

public static void main(String[] args) {
Class inspect;
try {
if (args.length > 0)
inspect = Class.forName(args[0]);
else
inspect = Class.forName("Test");
Field[] fs = inspect.getDeclaredFields();

Method[] methods = inspect.getDeclaredMethods();
for (int i = 0; i < methods.length; i++) {
Method methVal = methods[i];
Class returnVal = methVal.getReturnType();
int mods = methVal.getModifiers();
String modVal = Modifier.toString(mods);
Class[] paramVal = methVal.getParameterTypes();
StringBuffer params = new StringBuffer();
for (int j = 0; j < paramVal.length; j++) {
if (j > 0)
params.append(", ");
params.append(paramVal[j].getName());
}
System.out.println("Method: " + methVal.getName());
System.out.println("Modifers: " + modVal);
System.out.println("Return Type: " + returnVal.getName());
System.out.println("Parameters: " + params);
System.out.println();
}
} catch (ClassNotFoundException e) {
System.out.println(e.toString());
}
}
}
yuzl32 2006-02-27
  • 打赏
  • 举报
回复
动态绑定

路过..
genius0182 2006-02-27
  • 打赏
  • 举报
回复
我想知道反射是怎么工作的,不知道我说明白了吗?
superman421 2006-02-27
  • 打赏
  • 举报
回复
最好把问题说详细点,不晓得上面的回答感觉怎么样
superman421 2006-02-27
  • 打赏
  • 举报
回复
你的问题提的太简单了。
反射的作用主要是让你的程序运行是动态的获得某个对象的属性,或着创建一个对象。
反射的一个好处就是可以使用表达式(一个包含调用信息的字符串)对某个类或对象进行操作。
比方我有了一个类的完整类名,这个类又在当前loader可以读取的位置,就可以直接使用这个类名构造一个对象。
或者有了一个对象,知道这个对象有某个方法,可以通过方法名调用这个方法。

反射主要是为了javaBean和服务框架服务的。因为框架一般需要动态配置某些引擎的类,和动态调用某些对象的方法。但在编写代码时程序又不能获得这些类的具体信息。
反射调用的速度相当忙!!!!!!!

62,629

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧