黑马程序员技术交流社区
标题:
新手关于反射的疑问
[打印本页]
作者:
翟友伟
时间:
2012-3-28 14:14
标题:
新手关于反射的疑问
看基础加强 视频 中提高一个 叫反射的概念
只是知道 就是把java类中各个成分映射成相对应的java类
看了视频中的反射 代码又长又麻烦。。。
但是实际中反射 的作用是什么呢?
哪位同学帮我举个简单的应用例子。。
让我了解下 反射的简单流程 和应用。。。。。。。
比如说 我们为什么要用 反射 ?什么情况下需要用反射。。。。。
反射 比直接 调用 有好优点。。
作者:
姚鑫
时间:
2012-3-28 14:39
反射的最大应用是框架的实现,比如后面要学习的struts,spring,hibernate框架,框架为什么会在不知道我们写的类的情况下,为我们创建对象呢?因为它们用的就是反射技术。一般我们会把类的位置,类名等信息写进各种框架的XML文件中,框架得到了类名,就会得到类的Class,然后调用newInstance()创建对象。
作者:
抓哇
时间:
2012-3-28 14:39
反射式直接绕过编译的 这个是最大的区别 反射的本质是Class 运行时类这个类型 只要搞到这个对对应的所谓的字节码文件 就可以调用它的方方面面的成分了
作者:
李涛涛
时间:
2012-3-28 14:40
java反射机制提供了一种动态链接组件的功能,允许程序创建和控制任类对象。通过字段和属性可以获取未加载类中的信息,比较适用于以非常普通方式和与对象协作的库。
缺点就是:反射的性能要低于直接调用
作者:
刘蕴学
时间:
2012-3-28 15:16
我一会会发一个关于反射的具体应用帖子,你可以看看
作者:
yangshang1
时间:
2012-3-28 15:19
import java.lang.reflect.*;
public class TestAgent {
public static void main(String[] args) {
Agent agent=new Agent();
BAgentFace bAgentFace=null;
agent.setObj(new BAgent());
bAgentFace=(BAgentFace)Proxy.newProxyInstance(BAgentFace.class.getClassLoader(),new Class[]{BAgentFace.class},agent);
bAgentFace.add();
}
}
class Agent implements InvocationHandler
{
private Object obj;
public void setObj(Object obj) {
this.obj = obj;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
return method.invoke(obj,args);
}
}
class BAgent implements BAgentFace
{
public void add()
{
System.out.println("ni hao");
}
}
interface BAgentFace
{
public void add();
}
作者:
和心愿
时间:
2012-3-28 15:29
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的以及动态调用对象的方法的功能称为java语言的反射机制。
Java反射机制主要提供了以下功能:在运行时判定任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判定任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代理。
另外就是框架了
作者:
翟友伟
时间:
2012-3-29 16:25
谢谢大家 可能是我还没学到 反射的 具体应用把
框架 什么时候才能学到。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2