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用途之一:访问不可见的(包括私有)属性、方法

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

  • 相关阅读:
    POJ 1703 Find them, Catch them
    POJ 2236 Wireless Network
    POJ 2010 Moo University
    POJ 2184 Cow Exhibition
    POJ 3280 Cheapest Palindrome
    POJ 3009 Curling 2.0
    POJ 3669 Meteor Shower
    POJ 2718 Smallest Difference
    POJ 3187 Backward Digit Sums
    POJ 3050 Hopscotch
  • 原文地址:https://www.cnblogs.com/liaoxiaolao/p/9608802.html
Copyright © 2011-2022 走看看