黑马程序员技术交流社区
标题: 关于反射... [打印本页]
作者: 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
:handshake.........................
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |