零基础Java:第二十讲(通过反射调用类的完整结构)

124 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

通过反射调用类的完整结构

  • 二、通过反射调用类的完整结构

    • Field、Method、Constructor、Superclass、Interface、Annotation
    • 举例

      • 父类:Person
      • 子类:Student
      • 接口1:Move
      • 接口2:Study
      • 测试类:Test1
      • 输出结果
    • 全部的构造器

      • public Constructor[] getConstructors(),返回此Class对象所表示的类的所有public构造方法
      • public Constructor[] getDeclaredConstructors(),返回此Class对象所表示的类声明的所有构造方法
      • Constructor类中方法的调用:

        • 取得修饰符:public int getModifiers();
        • 取得方法名称:public String getName();
        • 取得参数的类型:public Class<?>[] getParameterTypes();
      • 举例

        • getConstructors();方法
        • getDeclaredConstructors();方法
      • 如何用反射的构造方法来创建对象

        • Student类的三个构造方法
        • 第一类:公有无参构造

          • 代码
          • 输出
        • 第二类:公有有参构造

          • 代码
          • 输出
        • 第三类:私有有参构造(通过反射强制调用)

          • 代码
          • 输出
        • 注意

          • getDeclaredConstructor(String.class,int.class),该方法中的参数是class类型,所以参数写为:参数类型.class。
          • setAccessible(true),该方法解除私有的封装,接下来便可以对该私有构造强制调用
    • 全部的方法Method

      • public Method[] getDeclaredMethods();返回此Class对象所表示的类或接口的全部方法
      • public Method[] getMethods();返回此Class对象所表示的类或接口的public的方法
      • Method中包含的方法:

        • public Class<?> getReturnType()取得全部的返回值
        • public Class<?> getParameterType()取得全部的参数
        • public int getModifiers()取得修饰符
      • 举例

        • getDeclaredMethods();和getMethods();方法的使用
        • 输出结果(包含了Object父类的方法)
    • 全部的属性Field

      • public Field[] getFields();返回此Class对象所表示的类或接口的public的Field(获取类的公有属性,包含了父类的属性)
      • public Field[] getDeclaredFields();返回此Class对象所表示的类或接口的所有的Field(获取本类的(不包括父类的)所有属性,包括私有和公有)
      • Field中包含的方法:

        • public int getModifiers();以整型的形式返回此Field的修饰符
        • public Class<?> getType;得到Field的属性类型
        • public String getName();返回Field的名称
      • 举例

        • getFields();和getDeclaredFields();方法的使用
        • 输出
    • 获取类所在的包

      • 代码
      • 输出