反射

【反射 reflect】

 程序在运行时可以动态的获取任何类的信息, 构造任何类的对象, 调用任何方法以及属性

 

【类的类型】

 

 1,2,3,4,5 - int 类型,基本数据类型

 "a", "3", "3.14" - String 类型,引用数据类型

 int , String , Dog , Student - Class类型(类的类型)

 

 类的共同点:

  构造器

  成员属性

  成员方法

 

【类对象】

类对象和类的对象(实例)的区别:

类的对象:对类的一个实例,是具体的
类对象是类的代码信息,比如类里的属性的作用域,类型等等,方法的作用域,返回类型,参数类型等等 

 

 1. 通过类的对象调用 getClass()方法获取

  前提: 你要有个类的对象

 

 2. 通过类名.class获取

  前提: 你得能访问到这个类(被访问修饰符限制)

 

 3. 通过 class.forName("完整类名");

  前提: 你要知道类的全名(用的最多)

 

【常用API】

 

 1. Class 类

newInstance() 用公开的无参构造构造对象

getName() 获取完整类名

getSimpleName() 简单类名

getConstructors() 获取所有公开构造器

getDeclaredConstructor() 获取指定参数构造器

getDeclaredConstructors() 获取所有构造器

getDeclaredField 获取自己定义的属性

getField 获取公开属性(包括继承得到的)

 

 2. Constructor 构造器

getModifiers() 获取访问修饰符

getName() 获取名字

getParameterTypes() 获取参数列表

newInstance() 构造对象

setAccessible(true) 设置访问权限

 

 3. Field 字段 属性

getModifiers() 获取访问修饰符

getName() 获取名字

set(Object obj, Object value) 给属性赋值

Object get(Object obj) 取出属性的值

setAccessible(true) 设置访问权限

 

 4. Method 方法

getModifiers() 获取访问修饰符

getName() 获取名字

setAccessible(true) 设置访问权限

Object invoke(Object obj, Object... args); 调用方法

 

实际应用参见:

Applicationcontext工具类

https://blog.csdn.net/qq_36194262/article/details/82735263

basedao

https://blog.csdn.net/qq_36194262/article/details/82735256

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值