哪位知道反射的机制是怎么的,具体点?

解决方案 »

  1.   

    利用java反射机制获得修饰符import java.lang.reflect.Field;
    import java.lang.reflect.Method;
    import java.lang.reflect.Modifier;
    public class Test {    public static void main(String[] args) {
            Class inspect;
            try {
                if (args.length > 0)
                    inspect = Class.forName(args[0]);
                else
                    inspect = Class.forName("Test");
                Field[] fs = inspect.getDeclaredFields();
                
                Method[] methods = inspect.getDeclaredMethods();
                for (int i = 0; i < methods.length; i++) {
                    Method methVal = methods[i];
                    Class returnVal = methVal.getReturnType();
                    int mods = methVal.getModifiers();
                    String modVal = Modifier.toString(mods);
                    Class[] paramVal = methVal.getParameterTypes();
                    StringBuffer params = new StringBuffer();
                    for (int j = 0; j < paramVal.length; j++) {
                        if (j > 0)
                            params.append(", ");
                        params.append(paramVal[j].getName());
                    }
                    System.out.println("Method: " + methVal.getName());
                    System.out.println("Modifers: " + modVal);
                    System.out.println("Return Type: " + returnVal.getName());
                    System.out.println("Parameters: " + params);
                    System.out.println();
                }
            } catch (ClassNotFoundException e) {
                System.out.println(e.toString());
            }
        }
    }
      

  2.   

    反射类似于c中的指针,有时可以编写出十分简介的代码,主要是可以写出通用的代码(个人使用过程中感觉),因为reflect最主要是通过invoke方法调用类中的一个方法,那么当你不明确需要调用类中的哪个方法的时候(也就是调用的方法需要通过参数传递)时可以通过调用它来达到目的,这样只要固定一个类,调用方法只需要外界传入方法名就可以了。具体例子一般书上都有,下面简单列一个,希望对你有帮助:
    Class[] para1 = new Class[2];
    para1[0] = Class.forName("aaaaaaa");
    para1[1] = Class.forName("bbbbbbb");Class myclass1 = Class.forName("cccccccc");
    Method mymethod1 = myclass1.getMethod("aaaaaa",para1);
    Object args1[] = {obj1, obj2};
    cccccccc c = (cccccccc)mymethod1.invoke(myclass1.newInstance(),args1);
      

  3.   

    就是根据类的Class的对象可以得到类的所有的信息包括构造函数,方法,属性,所有的父类,接口想知道的都可以得到
      

  4.   

    你的问题提的太简单了。
    反射的作用主要是让你的程序运行是动态的获得某个对象的属性,或着创建一个对象。
    反射的一个好处就是可以使用表达式(一个包含调用信息的字符串)对某个类或对象进行操作。
    比方我有了一个类的完整类名,这个类又在当前loader可以读取的位置,就可以直接使用这个类名构造一个对象。
    或者有了一个对象,知道这个对象有某个方法,可以通过方法名调用这个方法。反射主要是为了javaBean和服务框架服务的。因为框架一般需要动态配置某些引擎的类,和动态调用某些对象的方法。但在编写代码时程序又不能获得这些类的具体信息。
    反射调用的速度相当忙!!!!!!!
      

  5.   

    主要是通过java.lang.reflect包里面的类来完成的,
    包括得到类的属性,方法,方法的参数
    以及同通过方法的名称来调用方法(invoke)
      

  6.   

    java是解释性的语言,所以它具有传统语言不具有的动态性。
    java的反射机制就是建立在这个之上的。
    具体要知道如何解析字符串,如何调用方法,那你只有去看源码了。
      

  7.   

    反射是JAVA支持的元数据的特性
      

  8.   

    招聘
    java工程师
    java jsp servlet spring hibernate js css
    上面会一部分既可qq 283765999 
    地点:北京