1、反射机制
反射就是把Java类中的各个成分映射成一个个的Java对象。即在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能调用它的任意一个方法和属性。这种动态获取信息及动态调用对象方法的功能叫Java的反射机制。
1.1 反射机制的功能
Java反射机制主要提供了以下功能:
- 在运行时判断任意一个对象所属的类。
- 在运行时构造任意一个类的对象。
- 在运行时判断任意一个类所具有的成员变量和方法。
- 在运行时调用任意一个对象的方法。
- 生成动态代理
1.2获取class对象的方式
1、Class.forName(“全类名”) 将字节码文件加载进内存,返回class对象
- 多用于配置文件的读取,将类名定义在配置文件中。读取文件加载类
2、类名.class:通过类名熟悉class获取
- 多用于参数传递
3、对象.getClass:方法在Object类中的定义
- 多用于对象获取字节码的方式
1.3 Class对象功能
获取功能
获取成员变量们
public Field[] getDeclaredFields()
1
2
3
* ```tsx
public Field getDeclaredField(String name)public Field[] getFields() 获取publc修饰的
1
2
3
* ```tsx
public Field getField(String name) 获取publc修饰的
获取构造方法
1
2
3
4public Constructor<?>[] getDeclaredConstructors()
public Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes)
public Constructor<?>[] getConstructors() 获取publc修饰的
public Constructor<T> getConstructor(Class<?>... parameterTypes) 获取publc修饰的获取成员方法们
1
public Method[] getMethods() 获取publc修饰的
1
2public Method getMethod(String name,
Class<?>... parameterTypes) 获取publc修饰的public Method[] getDeclaredMethods()
1
2
3
4
```java
public Method getDeclaredMethod(String name,
Class<?>... parameterTypes)获取类名
getName()
带Declared的方法,需要设置setAccessible(true)方法 称为暴力反射
2 、基本数据类型和数组实例
2.1、Java中9大内置基本数据类型
byte,short,int,long,char,float,double,boolean,void关键字
2.2、数组实例
每个数组属于被映射为 Class 对象的一个类,所有具有相同元素类型和维数的数组都共享该 Class 对象
表示数组的Class实例:
String[] sArr1 = {“A”,”C”};
Class clz = String[].class;//此时clz表示就是一个String类型的一位数组类型