Class类
Class类是反射中的核心类
Java中每个类都有一个相对应的Class类的对象,JVM加载类时会创建一个该类的Class类对象,此Class类对象用于保存该类的类型信息
Class类常用的方法
获取类中的属性:
- getFields(): 获取类中所有的公共字段,可以访问父类的
- getField(String name):获取类特定的字段,包括父类
- getDeclaredFields(): 获取类中所有的公共字段,不包括父类
- getDeclaredField(String name): 获取类特定的字段,不包括父类
获取类中的构造函数:
- getConstructors():获取类中的公共方法
- getConstructor(Class[] params): 获取类的特定构造方法,params参数指定构造方法的参数类型
- getDeclaredConstructors(): 获取类中所有的构造方法(public、protected、default、private)
- getDeclaredConstructor(Class[] params): 获取类的特定构造方法,params参数指定构造方法的参数类型
获取类中的方法:
- getMethods(): 获得类的public类型的方法
- getMethod(String name, Class[] params): 获得类的特定方法,name参数指定方法的名字,params参数指定方法的参数类型
- getDeclaredMethods(): 获取类中所有的方法(public、protected、default、private)
- getDeclaredMethod(String name, Class[] params): 获得类的特定方法,name参数指定方法的名字,params参数指定方法的参数类型
其它重要方法:
- newInstance(): 通过类的不带参数 的构造方法创建这个类的一个对象
- forName(String className): 获取className参数指定的类的class对象
- forName(String className,boolean initialize,ClassLoader): 使用指定的类加载器获取className参数指定的类的class对象
- getClassLoader(): 获取类加载器
- getName(): 获取类名
- getPackage(): 获取类所在的包名
获取Class对象的三种方法
调用Class类的静态方法forName()
Class.forName("java.lang.String");
使用类的.class语法
Class cls = String.class;
调用对象的getClass方法
String str = "123"; Class cls = str.getClass();