反射总结

知识点总结

l  如何获取.Class文件对象

                   1, 通过Object类 getClass()方法获取 Class对象

                   2, 通过类名.class 方式 获取 Class对象

                   3, 通过反射的方式, Class.forName(String classname) 获取Class对象

                            public static Class<?> forName(String className)throws ClassNotFoundException

返回与带有给定字符串名的类或接口相关联的 Class 对象

l  通过反射, 获取类中的构造方法,并完成对象的创建

                   获取指定的构造方法

                         public Constructor<T> getConstructor(Class<?>... parameterTypes)

                                     获取指定的public修饰的构造方法

                         public Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes)

                                     获取指定的构造方法,包含私有的

                获取所有的构造方法

                         public Constructor<?>[] getConstructors() 获取所有的public 修饰的构造方法

                         public Constructor<?>[] getDeclaredConstructors() 获取所有的构造方法,包含私有的

l  通过反射, 获取类中的构造方法,并完成对象的创建

                步骤:

                1,获取字节码文件对象

                2,通过字节码文件对象 ,获取到指定的构造方法

                         getConstructor(参数);

                3,通过构造方法,创建对象

                         public T newInstance(Object... initargs)

l  私有构造方法,创建对象

                   1,获取字节码文件对象

                2,通过字节码文件对象 ,获取到指定的构造方法

                         getDeclaredConstructor (参数);

                3,暴力访问

                         con.setAccessible(true);

                4,通过构造方法,创建对象

                         public T newInstance(Object... initargs)

l  通过反射,获取Class文件中的方法

                获取指定的方法

                         public Method getMethod(String name, Class<?>... parameterTypes)

                                   获取指定的public方法

                         public Method getDeclaredMethod(String name, Class<?>... parameterTypes)

                                   获取指定的任意方法,包含私有的

                获取所有的方法

                         public Method[] getMethods() 获取本类与父类中所有public 修饰的方法

                         ublic Method[] getDeclaredMethods()获取本类中所有的方法,包含私有的

l  通过反射,调用方法

           步骤:

           1,获取Class对象

           2,获取构造方法,创建对象

      3,获取指定的public方法

           4,执行方法     

                    public Object invoke(Object obj, Object... args)

l  私有方法的调用:

          1,获取Class对象

          2,获取构造方法,创建对象

          3,获取指定的private方法

          4,开启暴力访问

                 m5.setAccessible(true);

          5,执行方法  

                 public Object invoke(Object obj, Object... args)

l  通过反射,获取成员变量(字段)

                获取指定的成员变量

                          public Field getField(String name) 获取public修饰的成员变量

                          public Field getDeclaredField(String name) 获取任意的成员变量,包含私有

                获取所有的成员变量

                          public Field[] getFields() 获取所有public修饰的成员变量

                          public Field[] getDeclaredFields() 获取司所有的成员变量,包含私有

l  通过反射,获取成员 变量,并赋值使用

                步骤:

                1,获取字节码文件对象

                2,获取构造方法,创建对象

                3,获取指定的成员变量

                4,对成员变量赋值\获取值操作

                         public void set(Object obj,  Object value) 赋值

                         public Object get(Object obj) 获取值

l  私有成员变量的使用

              步骤:

                1,获取字节码文件对象

                2,获取构造方法,创建对象

                3,获取指定的成员变量

                4,开启暴力访问

                5,对成员变量赋值\获取值操作

                         public void set(Object obj,  Object value) 赋值

                         public Object get(Object obj) 获取值

posted @ 2018-07-25 17:52  少说点话  阅读(200)  评论(0编辑  收藏  举报
网站运行: