java 反射 总结上篇

        在编译时不能确定哪个类被加载,而在程序运行时才加载、使用。

        反射是指能够在运行时,观察并修改自己运行时的行为特性。java反射机制提供了以下的一些功能:

  • 在运行时判断任意一个对象的所属类
  • 在运行时构造任意一个类的对象
  • 在运行时判断任意一个类所属的属性和方法
  • 在运行时调用任意一个对象的方法

        反射常用的java类型有:

  • java.lang.Class<T>类可以获取类和类的成员信息
  • java.lang.reflect.Constructor<T>类可以调用类的构造方法
  • java.lang.reflect.Feild类可以访问类的属性
  • java.lang.reflect.Method类可以调用类的方法

使用反射的基本步骤:

  1. 导入java.lang.reflect.*是java基础包
  2. 获取需要操作的java.lang.Class类对象
  3. 调用类的方法、获取Field、Method等等
  4. 使用反射API操作实例成员

获取类实例的三个方法:

  • 方法一:对象.getClass();
  • 方法二:类.class;
  • 方法三:Class.forName();

获取类型的基本信息: 

          String getName() 以字符串形式返回该类型的名称;String getSimpleName()以字符串形式返回该类型的简称 ; Package getPackage() 获取该类型所在的包 ;Class getSuperclass() 返回该类型的超类的class实例; Class[] getInterfaces() 返回该类型所实现的全部接口的Class实例; int getModifiers() 返回该类型的所有修饰符,由public、protected,private,final,static,abstract等对应的int常量组成,返回的整数应使用Modifier工具类来解码,才可以判断修饰符的构成 ;Class[] getDeclaredClasses() 返回该类型中包含的全部内部类的Class实例 ;Class getDeclaringClass()反馈该类型所在的外部类的Class实例。

获取构造方法的信息:

        Constructor getConstructor(Class... params)返回该类型指定参数列表的public构造方法,构造方法的参数列表与params所指定的类型列表所匹配 ; Constructor[] getConstructors() 返回该类型的所有public 构造方法 ; Constructor getDeclaredConstructor(Class ... params) 返回该类型的指定参数列表的构造方法,访问级别不限 ; Constructor [] getDeclaredConstructors() 返回该类型的所有构造方法,访问级别不限。

获取属性信息:

        Field getField(String name) 返回该类型中所指定名称的public属性,name参数用户指定属性名称  ; Field[] getFields() 返回该类型中所有的public属性 ; Field getDeclaredField(String name) 返回该类型中指定名称的属性,与属性访问级别无关; Field[] getDeclaredFields() 返回该类型中所有的属性,与属性的访问级别无关。

获取方法信息:

        Method getMethod(String name ,Class... params) 返回该实例中指定的public方法,name参数用于指定方法名称,params参数指定参数列表; Method[] getMethods() 返回该实例中所有的public方法; Method getDeclaredMethod(String name,Class... params) 返回该实例中指定的方法,与方法的访问级别无关 ; Method[] getDeclaredMethods() 返回该实例中的全部方法,与方法的访问级别无关。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值