反射

1. 概述

  java反射机制是在运行时,能够知道任意一个类的所有属性和方法;并且对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取信息以及动态调用对象的方法的功能称为java语言的反射机制。反射就是把java类中的各种成分映射成一个个的java对象。

2. 获取Class对象的三种方式

  (1) 类对象.getClass();

  (2) 类型名.Class(各种类型,包括基本数据类型)

  (3) 调用Class.forName(全限定名)

  

  

  创建对象实例:Class对象.newInstance()方法

 

3. 获取构造方法

  (1) public Constructor[] getConstructors():获取所有“公有的”构造方法

  (2) public Constructor[] getDeclaredConstructors():获取所有的构造方法(包括私有、受保护、默认、公有)

  (3) public Constructor getConstructor(Class...parameterTypes):获取某个“公有的”构造方法

  (4) public Constructor getDeclaredConstructor(Class...parameterTypes):获取某个构造方法(包括私有、受保护、默认、公有)

 

  调用构造方法:

  Constructor.newInstance(Object...initargs)

 

4. 获取成员变量:

  (1) public Field[] getFields():获取所有的公有字段

  (2) public Field[] getDeclaredFields():获取所有字段,包括:私有、受保护、默认、公有

  (3) public Field getField(String name):获取某个公有字段

  (4) public Field getDeclaredField(String name):获取某个字段,包括:私有、受保护、默认、公有

 

  设置成员变量的值

  Feild.set(Object obj, Object value)

 

5. 获取成员方法:

  (1) public Method[] getMethods():获取所有公有方法(包含了父类的方法也包含Object类)

  (2) public Method[] getDeclaredMethods():获取所有成员方法,包括私有的(不包含父类的方法)

  (3) public Method getMethod(String name, Class<?>... parameterTypes):获取某个公有方法

  (4) public Method getDeclaredMethod(String name, Class<?>... parameterTypes):获取某个方法(可以是私有的)

 

  调用成员方法

  Method.invoke(Object obj, Object... args)

 

 6. 获取其他信息

    获取类实现的接口:

    public Class<?>[] getInterfaces()

    

    获取父类

    public native Class<? super T> getSuperclass()

 

    获取修饰符

    public native int getModifiers()

 

  

posted @ 2019-03-17 15:11  欣欣向荣666  阅读(88)  评论(0编辑  收藏  举报