zoukankan      html  css  js  c++  java
  • Java反射机制

    什么是反射Reflection:

    Java反射说的是在运行状态中,对于任何一个类,我们都能够知道这个类有哪些方法和属性。对于任何一个对象,我们都能够对它的方法和属性进行调用。我们把这种动态获取对象信息和调用对象方法的功能称之为反射机制。

    所谓反射其实就是获取类的字节码文件,也就是.class文件,我们可以通过Class这个对象进行获取。

    三种方式获取class对象的方式:

    1. 对象.getclass()
    Iphone iph = new Iphone();
    Class cls = iphone.getClass();

      2. 类.Class()

    Class cls = Iphone.class;

      3. Class.forName(“包名.类名”)

    Class cls = Class.forName(“com.lalala.Iphone”);

    在以上的三种方法中:

    方法1,已经创建了Iphone对象,这个时候就不需要去进行反射了,显得有点多此一举;

    方法2,需要导入Iphone类的包,依赖性太强了;

    方法3中的Class类继承自Object类,故可以直接使用,且实参为字符串,即使com.lalala包中的Iphone类不存在,该方法在不运行时也不会报错,所以我们一般选用方法三!

    通过class对象动态创建目标对象:         

    Iphone iph2 = (Iphone)clz.newInstance();//java9之前的方法,不安全
    Iphone iph3 = (Iphone)clz.getConstructor().newInstance(若构造器有参数,该处要填参数);//Java9推荐该方法

     此外还可以通过class对象查看目标类有哪些方法和属性。

  • 相关阅读:
    为什么选择 Yeoman 及 Yeoman 的安装
    NPOI高效匯出Excel
    CentOS7 MongoDB安裝
    打印函数调用堆栈
    libevent源码分析:eventop
    libevent源码分析:time-test例子
    libevent源码分析:event_assign、event_new
    libevent源码分析:bufferevent
    lievent源码分析:evbuffer
    epoll实现压测工具
  • 原文地址:https://www.cnblogs.com/churujianghudezai/p/11371148.html
Copyright © 2011-2022 走看看