zoukankan      html  css  js  c++  java
  • 反射总结

    知识点总结

    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) 获取值

  • 相关阅读:
    [BZOJ 2457] 双端队列 (思维)
    字符串划分 [Bitset 字符串Dp]
    POJ2947 Widget Factory [高斯消元]
    数字串 [分治+哈希+扩展KMP]
    POJ3590 The shuffle Problem [置换+dp]
    P1970 花匠 [权值线段树优化dp, NOIp2003, Y]
    UVA306 Cipher[循环节]
    POJ3270 Cow Sorting [置换]
    POJ 3128 Leonardo's Notebook[置换群幂相关]
    VMware 11 设置U盘启动,总是找不到physicalDrive1
  • 原文地址:https://www.cnblogs.com/sueyyyy/p/9367383.html
Copyright © 2011-2022 走看看