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

  • 相关阅读:
    CentOS7下安装Scrapy
    阿里云ECS提示RHSA-2017:3263: curl security update
    CentOS 7.0安装配置LAMP服务器(Apache+PHP+MariaDB)
    Electron: 从零开始写一个记事本app
    flask请求流程
    编写Dockerfile
    docker-compose使用
    redis持久化切换rdb到aof
    RESTful API规范
    介绍importlib
  • 原文地址:https://www.cnblogs.com/sueyyyy/p/9367383.html
Copyright © 2011-2022 走看看