[TOC]
## java反射
- 需要使用Class类
```
使用Class类来表示所有类。Class类中定义了所有类的行为跟特征
```
* [ ] Class 对象使用反射的一个源头
* [ ]
* [ ] 使用反射可以获得类的所有的方法和属性,包括私有的;
>### 获得Class的三种方式:
- 第一种:
```
Class classTypes = 类名.class;
```
- 第二种:
```
首先创建一个类对象;
Class classTypes = 对象名.getClass();
```
- 第三种(推荐使用):
```
Class classTypes = Class.forName(全类名(String));
```
>### 方法
```
* getMethods():可以拿到当前类的所有方法(只包含公有的以及继承的方法),返回类型是Method对象数组;
* getMethod(方法名称,声明参数列表):拿到指定方法,参数格式:参数类型.class;
* getDeclaredMethod(方法名称,声明参数列表):拿到指定方法,忽略访问权限修饰符。参数格式:参数类型.class;
* setAccessible(true):设置访问权限为true,才能访问私有方法;
* invoke(类任意对象,传入参数):调用方法(无参方法为null);
getFields():拿到所有的属性(公有的的属性),返回Field对象数组;
getFiled(属性名称):拿到指定公有属性;
set(类任意对象,value): 对象属性设置;
get(任意类对象):获得该指定对象属性;
getDeclaredField(属性名称):获得所有属性,忽略访问权限修饰符;
* setAccessible(true):设置访问权限为true,才能访问私有属性;
getConstructors():拿到当前类所有公有构造器;
getInterfaces():拿到当前类实现的接口;
getAnnotations():返回当前类的所有注解;
newInstance():实例化类对象
getName():拿到全路径名称
getSimpleName():只拿到名称
```
- 注意
```
1. 使用getMethod()方法时应当注意方法的权限修饰符,如果是protected或者private应当使用getDeclaredMethod();
2. invoke(类任意对象,传入参数)为Method类的执行方法,要调用则先通过getMethod()或getDeclaredMethod()获得Method对象。
```
- 第一章 java SE
- 1.1数据类型
- 1.2 流程控制语句
- 1.3 方法
- 1.4 面向对象三特性
- 1.5 对象数组与集合
- 1.6 数组和集合操作工具类
- 1.7 可变参数
- 1.8 String
- 1.9 StringBuilder
- 1.10 final&&finally&&finalize
- 1.11 抽象类与接口
- 1.12 基本数据类型的包装类
- 1.13 泛型
- 1.14 内部类
- 1.15 throw & throws & try catch
- 1.16 线程
- 1.17 BeanUtils
- 1.18 java反射
- 1.19 序列化和反序列化
- 1.20 IO输入输出流
- 1.21 File
- 1.22 RandomAccessFile
- 1.23 第三方工具CommonsIO
- 1.24 java网络传输
- 第二章 java EE
- 2.1 maven的配置
- 2.2 Cookie
- 2.3 EL表达式 JSTL
- 2.4 验证相关
- 2.4.1 验证码
- 2.5 防重复提交
- 2.6 activeMq的使用
- 2.7 jtl的使用
- 2.8 Upload上传文件
- 第三章 Spring相关
- 3.1 IOC/DI
- bean的生命周期
- bean的配置
- 3.2 Spring Aop
- 3.3 Spring Jdbc
- 3.4 事物相关
- 事物
- 事物的使用
- 3.5 MBG使用
- 第四章 解决问题方法
- 4.1 List转换为Map
- 4.2 结果返回类
- 4.3 HSSF的使用
- 第五章 排序
- 5.1 冒泡排序
- 5.2 选择排序
- 5.3 快速排序