反射

作者: shuixingge | 来源:发表于2016-05-11 15:11 被阅读70次

    概念:Java反射是可以让我们在运行时获取类的方法,属性,父类,接口等class内部信息的机制。通过反射我们还可以在运行期实例化对象,调用方法,通过调用get/set方法获取变量的值,即使方法或属性是私有的也可以通过反射的形式调用。
    使用场景:
    (1)编译时我们对于类的内部信息不可知,必须得到运行时才能获取类的具体信息。
    (2)要使用的类在运行时才会确定,这个时候我们不能在编译期就使用它,因此只能通过反射的形式来使用在运行时才存在的类。
    获取类的class对象的方式(三种):
    (1)类名.class;

    1

    (2)对象.getClass();

    Paste_Image.png

    (3)class.forName("类的全名");

    Paste_Image.png

    通过Class类型来构造目标类型的对象:
    (1)先拿到目标类型class对象。
    (2)拿到目标类型的构造方法。
    (3)调用Constructor.newInstance()。
    Tips:在调用方法之前,Method.setAcessible(true)可以掠过Java语言检查。
    反射获取方法:
    (1)getDeclaredMethod()和getDeclaredMethods()获取的是自身中定义的函数,从父类中集成的函数不能够获取到。
    (2)getMethod()和getMethods()获取的是当前类及其父类的public方法。
    反射获取属性:
    (1)getDeclaredField()和getDeclaredFields()获取的是在自身中定义的所有属性(public ,protected,private,default),从父类继承的属性不能获的。
    (2)getFields()和getField()获取的是自身及其父类中的public属性。
    反射获取父类和接口:
    反射获取注解信息:

    相关文章

      网友评论

          本文标题:反射

          本文链接:https://www.haomeiwen.com/subject/pzlurttx.html