请问JAVA的反射机制有什么用?

Ly_uu 2006-12-14 08:29:57
最近在看JAVA的反射机制,不过想来想去都不知道在实践工作中有什么用或用在那里,所以想请教一下各位知不知道呢?
...全文
282 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
galant2008 2006-12-14
  • 打赏
  • 举报
回复
反射也就是说,在编译时,你获取了一个指向某个并不存在你的程序空间中的对象的引用;
事实上在编译时你的程序无法获知这个对象所属的类.

java附带的库java.lang.reflect包含了FIeld,Method,Constructor类.这些类型的对象
是由jvm在运行时创建的,用以表示未知类里对应的成员.你就可以使用Constructor创建
新的对象,用get()和set()方法读取和修改与Field对象关联的字段,用invoke()方法调用
与Method对象关联的方法.

反射常用在类的反向控制,例如AOP

建议楼主去查查api
aChinese 2006-12-14
  • 打赏
  • 举报
回复
写工具用, 比如IDE为什么能代码提示, 就是能通过反射分析你写的类
junit777 2006-12-14
  • 打赏
  • 举报
回复
可以反射地方射来的箭矢,减低伤害
wanguanghai 2006-12-14
  • 打赏
  • 举报
回复
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 是用来描述某个类中单个方法的一个类。

wanguanghai 2006-12-14
  • 打赏
  • 举报
回复
反射是指一类应用,它们能够自描述和自控制。也就是说,这类应用通过采用某种机制来实现对自己行为的描述(self-representation)和监测(examination),并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。
  • 打赏
  • 举报
回复
想是想不出来的,等要用到了的时候你就知道有多有用了。所以现在看不懂也不要紧
已经存在 2006-12-14
  • 打赏
  • 举报
回复
反射的作用太大了,最大的感受时,利用反射可以写出非常精简的而且通用的东西

62,614

社区成员

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

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