A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 翟友伟 黑马帝   /  2012-3-28 14:14  /  2676 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

看基础加强 视频  中提高一个 叫反射的概念  
只是知道     就是把java类中各个成分映射成相对应的java类

看了视频中的反射 代码又长又麻烦。。。
但是实际中反射 的作用是什么呢?
哪位同学帮我举个简单的应用例子。。
让我了解下 反射的简单流程  和应用。。。。。。。


比如说   我们为什么要用 反射 ?什么情况下需要用反射。。。。。
反射  比直接 调用  有好优点。。

7 个回复

正序浏览
翟友伟 黑马帝 2012-3-29 16:25:42
8#
谢谢大家   可能是我还没学到  反射的 具体应用把
框架 什么时候才能学到。。
回复 使用道具 举报
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的以及动态调用对象的方法的功能称为java语言的反射机制。
Java反射机制主要提供了以下功能:在运行时判定任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判定任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代理。
另外就是框架了
回复 使用道具 举报

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();
}
回复 使用道具 举报
我一会会发一个关于反射的具体应用帖子,你可以看看
回复 使用道具 举报
java反射机制提供了一种动态链接组件的功能,允许程序创建和控制任类对象。通过字段和属性可以获取未加载类中的信息,比较适用于以非常普通方式和与对象协作的库。
缺点就是:反射的性能要低于直接调用
回复 使用道具 举报
反射式直接绕过编译的 这个是最大的区别 反射的本质是Class 运行时类这个类型 只要搞到这个对对应的所谓的字节码文件 就可以调用它的方方面面的成分了
回复 使用道具 举报
反射的最大应用是框架的实现,比如后面要学习的struts,spring,hibernate框架,框架为什么会在不知道我们写的类的情况下,为我们创建对象呢?因为它们用的就是反射技术。一般我们会把类的位置,类名等信息写进各种框架的XML文件中,框架得到了类名,就会得到类的Class,然后调用newInstance()创建对象。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马