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

    java中提供的动态执行API。

    可以动态**检查**对象的类型,对象类型的内部结构。

    还能动态创建对象,动态执行方法等。

    输出类的引用时带有$就是内部类。

    getClass是java api。

     反射AIP可以动态加载类,动态创建对象。

    Class cls = Class.forName("Foo.java");

    reflect.Foo@7d4991ad, 这不是地址,这是对象散列值。

    Class.newInstance能创建任何对象,只要这个该对象有无参构造器就可以。

    使用控制台输入类名的时候一定要带类的包名,否则报错。

    使用newInstance()方法时,类中一定要有无参构造方法。

    最大的特点是动态创建对象。

    Java的反射机制是在编译并不确定是哪个类被加载了,而是在程序运行的时候才加载、探知、自审。使用在编译期并不知道的类。这样的特点就是反射。

    Reflection,用在Java身上指的是我们可以于运行时加载、探知、使用编译期间完全未知的classes。换句话说,Java程序可以加载一个运行时才得知名称的class,获悉其完整构造(但不包括methods定义),并生成其对象实体、或对其fields设值、或唤起其methods。

    Class是反射的源。

    反射可以动态调用对象的方法:

    Foo foo

    动态调用方法:是指运行期动态地给出方法名,如果输入的是“test”就执行test()方法,如果输入是
    “demo”就执行demo()方法。

    动态执行方法:invoke:调用

    method.invoke();

    1.先在类中找到方法 method对象。

    2.在method上调用invoke就是执行方法,需要包含方法的对象作为参数。

    method.invoke(包含方法的对象)

    私有关键字只是语法上存在,反射属于底层API,底层可以打破这种权限。

    在java中只能使用反射与。

    ##反射API用途之一:访问不可见的(包括私有)属性、方法

    ##反射的用途之二:将一段程序与另外一段程序进行解耦。

  • 相关阅读:
    Linux下打包发布Qt应用程序
    嵌入式中的BSP---BSP到底是什么?
    (转)Spring 工具类 ConfigurationClassParser 分析得到配置类 -- springboot一样处理过程
    React Hooks之useState、useEffect使用
    数组排序多种方法汇总
    封装判断浏览器是否是IE浏览器
    封装addEventListener,removeEventListener指定元素添加事件及兼容问题js
    js判断是否超过几行
    react日期格式化组件
    Windows smynesc免费经典儿时小游戏分享给大家
  • 原文地址:https://www.cnblogs.com/liaoxiaolao/p/9608802.html
Copyright © 2011-2022 走看看