zoukankan      html  css  js  c++  java
  • Java反射基础笔记

    1. why: 反射是学习 Java 框架的基础. Java 框架的底层实现都是基于反射.

    2. Class:

    1). Class 是一个类型. 
    2). 当一个 .class 文件被加载到 JVM 时, 在 JVM 内部会创建唯一的一个 Class 对象, 它对应 .class 文件,也就是说.class文件对应对象的class属性指向这个Class的对象。

    3). 如何得到 Class 对象

    //1.1 最常用的方式: 可以利用 Class 类的静态方法: forName(className) 
    String className = "com.atguigu.reflection.Person";
    clazz = Class.forName(className);

    //1.2 如果已经存在对应的对象, 则可以调用其 getClass() 方法
    Object object = new Person();
    clazz = object.getClass();

    //1.3 也可以直接利用 类 的 class 静态属性: 该种方式不会是静态代码块执行. 
    clazz = Person.class;

    4). Class 对象由神马作用: Class 是反射的核心, 一切反射都是从 Class 开始的.

    ①. 如何获取全部的方法: 调用了 Class 对象的 getMethods() 返回 Method 的数组.

    //获取全部的 public 方法. 如果需要获取 private 方法, 则需调用 clazz.getDeclaredMethods()
    Method [] methods = clazz.getMethods();
    for(Method method: methods){ 
    System.out.println("-->" + method.getName());
    }

    ②. 如何获取指定 public 方法:

    //注意: 需要备齐 
    //1). Class 对象
    //2). 方法名: setName
    //3). 参数类型的列表: String.class
    Method method = clazz.getMethod("setName", String.class);
    System.out.println("**" + method);

    ③. 创建 Class 对应的对象:

    //2.1 创建 Class 对象所对应的那个类的对象: 调用 Class 对象的 newInstance() 方法
    //注意: 必须要在 Class 对象所对应的那个类中提供一个公有的, 无参的构造器! 否则运行就会出错!
    Object object = clazz.newInstance();

    5). 如何使 Method 对应的方法执行.

    ①. Method: 在反射中对应方法.

    ②. 执行方法: 调用 Method 对象的 invoke 方法.

    //注意: 需要备齐
    //1). Method 对象. method
    //2). Method 所在的那个类的对象. object
    //3). 指向方法需要传入的参数. atguigu
    method.invoke(object, "atguigu");

    6). 后面的内容:

    ①. 操作属性. Field
    ②. 如何操作 private 类型的成员(包括属性和方法)
    ③. 反射和泛型. 
    ④. 如何获取类的注解. 
    //......

  • 相关阅读:
    wzplayer for android V1.5 整合硬解码(仍然支持加密音视频)
    mac osx 快捷键
    从零开始学AS3游戏开发【七】永无终结,不断完善的游戏
    flash flex as3 类库 资料大全
    php include一个有全局变量的应注意
    MySQL事件调度器 CREATE EVENT
    The Miner – 专业Flash AS3性能分析器(profiler)入门教程
    as3加密入门1使用alchemy进行代码混淆
    从零开始学AS3游戏开发【五】 告别方块,添加碰撞
    PHP实现的Mysql读写分离
  • 原文地址:https://www.cnblogs.com/fengze/p/6573763.html
Copyright © 2011-2022 走看看