黑马程序员技术交流社区

标题: 新手关于反射的疑问 [打印本页]

作者: 翟友伟    时间: 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