反射使java具有了运行时刻加载类的功能,使java具有了动态加载类的功能。

Class 类的使用

类类型

1
2
3
4
5
// 获取类类型的三种方式
Class c1 = int.class; // int 类的类类型
Class c2 = Class.forName("类的全称");
A a = new A();
Class c3 = a.getClass(); // 获取a类的类类型

获取类的名称、类的方法

getMethods() 方法获取的是所有的public的函数,包括父类继承而来的方法
getDeclaredMethods() 获取的是该类声明的所有方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

Class c = Obj.getClass();
// 类的名称
c.getName();

Method[] ms = c.getMethods();

for(int i = 0; i < ms.length; i++) {
// 获取方法的返回值类型的类类型
Class returnType = ms[i].getReturnType();
// 方法的返回值类型的名字
returnType.getName();
// 得到的方法的名称
ms[i].getName();
//获取方法的参数类型
Class[] parameterTypes = ms[i].getParameterTypes();
}