zoukankan      html  css  js  c++  java
  • java之反射

    1:类的加载
    当我们第一次使用一个类,系统会做两件事情:
    1:将该类的字节码文件(.class)文件加载到内存
    2: 系统还会为该字节码文件创建一个对象:Class对象
    a.txt hello.java D://lesson//a.txt ---->FIle类
    a.class Hello.class Demo.class ---->Class类

    2:一个类什么时候被加载
    1. 创建类的实例
    2. 类的静态变量,或者为静态变量赋值
    3. 类的静态方法
    4. 使用反射方式来强制创建某个类或接口对应的java.lang.Class对象
    5. 初始化某个类的子类
    6. 直接使用java.exe命令来运行某个主类


    3:反射的作用
    1:反射可以让我们在编译的时候使用一个不存在的或者以后才能存在类
    2:反射可以访问一个类的私有成员 MD5算法
    3: 通过反射,我们写一些通用代码

    4:反射的步骤
    1:获取类的Class对象 //一个类在内存中只有一个Class对象
    2:通过Class对象获取类的成员(构造方法,成员变量,成员方法)
    3:访问这些变量和方法


    单词:
    Class类
     Constructor 构造
     Method 方法
     Field 字段
     instance 实例
     invoke 执行


    5:通过Class获取类的成员
    1:获取类的构造方法
    a:获取所有的构造
    public Constructor<?>[] getConstructors() //只能获取public修饰的构造
    public Constructor<?>[] getDeclaredConstructors() //可以获取所有的构造(包括私有)
    b:获取单个的构造
    public Constructor<T> getConstructor(Class<?>... parameterTypes)
    public Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes)
    2:获取成员方法
    a:获取所有的成员方法
    public Method[] getMethods()
    public Method[] getDeclaredMethods()
    b:获取单个的成员方法
    public Method getMethod(String name, Class<?>... parameterTypes)
    public Method getDeclaredMethod(String name, Class<?>... parameterTypes)

    4:获取成员变量
    a:获取所有的成员变量
    public Field[] getFields()
    public Field[] getDeclaredFields()
    b:获取单个成员变量
    public Field getField(String name)
    public Field getDeclaredField(String name)

  • 相关阅读:
    移动Oracle数据库表空间文件。
    Web页面嵌入复杂WinForm控件权限问题
    关于bleand2000下面oracle服务器优化
    祝大家新年快乐!
    CentOS安装配置MongoDB及PHP MongoDB 扩展安装配置 新风宇宙
    FastDFS介绍和配置过程 新风宇宙
    ubuntu下安装redisserver和phpredis 新风宇宙
    PHP安装fastDFS扩展 新风宇宙
    用socket发送流数据示用 php://input? 接受post数据(可实现php和c/c++数据通讯) 新风宇宙
    linux操作系统下c语言编程入门 新风宇宙
  • 原文地址:https://www.cnblogs.com/qiqimu/p/7635593.html
Copyright © 2011-2022 走看看