java反射大全

作者对反射的理解:

        方法的调用(正常的调用:对象.方法()。反射调用方法:方法.对象())

        静态属性的调用(正常的调用:类.属性。反射调用:属性.类)

常见反射的用法:

        1.通过反射获取类

            Class<?> demo1 = Class.forName("java.util.Date");

            Class<?> demo1_1 = java.util.Date.class;

            Class<?> demo1_2 = "java.util.Date" .getClass();

            Class<?> demo1_3 = new java.util.Date(10).getClass();

             Class<?> demo2 = Class.forName("android.media.MediaRecorder$OutputFormat"); //内部类

        2.通过反射获取方法(不包含不可见的方法,如私有方法)

            Method mtdGetDefault = demo1 .getMethod("Date");// 普通方法,后面“Date”代表方法名称

            Object obj = mtdGetDefault.invoke(demo1,参数1,参数2,参数3...);       


      Constructor<?> cons = demo2.getConstructor(Integer.class,String.class,Object.class, ...);// 构造方法,括号里面的是构造方法的参数

            Object obj1 = cons.newInstance(参数1,参数2,参数3...);


            Constructor<?> cons1[] = demo2.getConstructors();

            Object obj1_1 = cons1[0].newInstance();

            Object obj1_2 = cons1[0].newInstance(参数1,参数2,参数3...);

        3.通过反射获取静态属性(非静态属性一般使用get方法来获取)

            Field wave = demo2 .getField("WAVE"); 

            int mWava = (Integer) wave.get(demo2);

你可能感兴趣的:(java反射大全)