日期:2014-05-20  浏览次数:20777 次

JAVA 反射机制
请用通俗易明的话讲解下:JAVA 反射机制 。小弟不胜感激!


------解决方案--------------------
所谓的反射机制就是java语言在运行时拥有一项自观的能力。
Java的反射机制的实现要借助于4个类:class,Constructor,Field,Method;
其中class代表的时类对 象,Constructor-类的构造器对象,Field-类的属性对象,Method-类的方法对象。通过这四个对象我们可以粗略的看到一个类的各个组 成部分。
------解决方案--------------------
通过类名,方法名,参数名等找到对应的类和方法,可以创建类的实例,或执行该方法,又或者取出参数的值
------解决方案--------------------
反射的精髓 就在于 动态。
扩展一点说,就是根据名字String, 能够创建对象,获得CLass,Instance的一些相关信息。
------解决方案--------------------
反射其实不是很难,你自己写几个小程序就能理解了。光靠别人说是没用的
------解决方案--------------------
Java code
package com.xuz.csdn.aug4;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;

public class ReflectTest {

    public static void main(String[] args) {
        Class c = MyClass.class;
        
        try {
            Constructor<?> cons = c.getConstructor(String.class);
            System.out.println(cons);
        } catch (SecurityException e) {
            e.printStackTrace();
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        }
        
        Field[] fields = c.getDeclaredFields();
        for (Field field : fields) {
            System.out.println(field);
        }
        
        Method[] methods = c.getDeclaredMethods();
        for (Method method : methods) {
            System.out.println(method);
        }
        
    }

}

------解决方案--------------------
http://www.java2000.net/p6982
------解决方案--------------------
反射就是把java类的某些信息映射成一个java类。
------解决方案--------------------
反射机制的基本用处是:通过字符串 创建对象,调用方法,设置属性值

这个是所有基于配置的框架的基础,想象那些XML中的类名或者方法是怎么被invoke的

假设你有一组类,可以写一个(仅一个)基于反射的程序,读入不同的xml文件,执行得到不同的效果,这是我理解的基于配置的程序;

而一个普通的程序 new 对象 调用方法,你可以预期其执行过程和效果,而反射的话就不知道了,配置决定
------解决方案--------------------
关注中……
------解决方案--------------------
反射机制就是 java在运行阶段 根据类名,获取到类的属性、方法信息(能获取到方法名称,但是不会获取到方法的具体实现) 与之有关的还有类加载器、代理机制。你如果接触到spring的东西,能理解的快些,spring在使用xml bean方式依赖注入时是比较典型的反射机制。
------解决方案--------------------
String a="AClass";
如果有AClass这个类或方法的话,就可以通过反射由a或者"AClass"得到这个类或方法