黑马程序员技术交流社区

标题: 关于反射... [打印本页]

作者: laiminghui    时间: 2014-4-14 02:11
标题: 关于反射...

有哪位大虾  可以讲解一下  使用通俗易懂的  好记住 好理解的讲法...
作者: ilvsoft    时间: 2014-4-14 07:05
eflection(反射) 是Java被视为动态(或准动态)语言的一个关键性质。这个机制允许程序在运行时透过Reflection APIs取得任何一个已知名称的class的内部信息,包括其modifiers(诸如public, static 等等)、superclass(例如Object)、实现interfaces(例如Serializable),也包括fields和methods的所有信息,并可于运行时改变fields内容或调用methods。
例如:

import java.lang.reflect.Method;

public class DumpMethods
{
        public static void main(String[] args) throws Exception
        {
                Class<?> classType = Class.forName(args[0]);
               
                Method[] methods = classType.getDeclaredMethods();
               
                for(Method method : methods)
                {
                        System.out.println(method);
                }
        }
}
作者: 呆呆沙师妹    时间: 2014-4-14 09:32
反射,就是为了搭建一个通用的框架,并不指定具体使用的类,这个框架在没有指定具体类时,其功能无法实现,当别人使用这个框架并指定具体使用类时,通过反射获取别人指定类的字节码、成员等信息,填充框架,从而实现框架功能。
假设搭建的框架为:一种动物,吃饭,发出叫声。在没指定具体动物时,你不可能知道他是啥动物,吃什么饭和叫声是什么。当你指定这个动物为猫时,反射就会将猫进行解析,将猫的字节码加载内存,获取猫的字节码文件,取出吃饭和发生叫声这两个对应动作。这时框架功能就实现了:猫,吃鱼,发出喵喵声。
作者: 沫然    时间: 2014-4-14 16:18
本帖最后由 沫然 于 2014-4-14 16:25 编辑

JAVA反射机制
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
Java反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代理。


作者: laiminghui    时间: 2014-4-16 17:05
ilvsoft 发表于 2014-4-14 07:05
eflection(反射) 是Java被视为动态(或准动态)语言的一个关键性质。这个机制允许程序在运行时透过Reflec ...

:handshake.........................




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2