【JAVA】反射中的四大核心类---》Class,Constructor,Method,Field类

  • 在刚开始的时候,我们一直进行的是正向操作,即根据包名.类名找到类,进而产生类的实例化对象,现在,我们的反射指的是对对象的反向处理操作,所谓的“反”,就是根据对象来取得对象的来源信息,下面是关于反射中四大核心类

1. Class类—》用来描述整个类信息

取得Class类的对象有三种方式:

    a. "类的实例化对象.getClass()"--->该方法有Object类提供;
    b."类.class"-->直接根据某个具体的类来取得Class类的实例化对象;
    c."Class.forName(String className)"-->该方法由Class类提供;

注:除了第一种方法会产生普通类的实例化对象,其他两种都不会产生;
取得Class类对象后,我们就要利用对象干点事了,最直接的一个好处:可以通过(1)反射实例化对象:
“Class类对象.newInstance()”–》取得实例化对象,等价于无参构造;
(2)反射取得父类信息
a. “Class类对象.getPackage()”—>取得类的包名称
b .”Class类对象.getSuperClass()”–>取得父类对象
c. “Class类对象.getInterface()”—>取得实现的父类接口

*2. Constructor类*

   A: 取得Constructor类对象有两种方法:
      a. "Class类对象.getConstructor(参数类型.class)"--->取得指定参数类型的构造
      b. "Class类对象.getConstructors()"--->获得类中全部构造
   B: 通过Constructor类对象实例化对象:
          “Constructor类对象.newInstance("")”--->等价于有参构造

3. Method类

   A: 取得类中普通方法:
     a. "Class类对象.getMethods()"-->取得全部普通方法
     b. "Class类对象.getMethod('方法名',参数类型.class“”)"-->取得指定普通方法
   B:调用普通方法:
     . "方法名.invoke(对象名,设置方法参数)"-->调用普通方法

4.Field类

     A:父类中取得全部属性
         "Class类对象.getFields()   :  Field[]   
     B:父类中取得指定名称属性
         "Class类对象.getField("属性名字")": Field
     C : 本类中取得全部属性
         "Class类对象.getDeclaredFields()   :  Field[]
     D: 本类中取得指定名称属性
       "Class类对象. getDeclaredField(String name)"  :  Field
     E: :由Field类提供两个方法用来操作属性:
         <1> “.Field类对象.set(调用对象,“设置属性参数”)”---》设置属性内容
         <2> "Field类对象.get(调用对象)"----》取得属性内容

  ——————————————————————————————**THANKS**——————————————————————————————————————————————————

猜你喜欢

转载自blog.csdn.net/eternal_01/article/details/80312257