Class类位于java.lang包中,是一个泛型类,任何类型都有class对象,包括int,void
重要方法
- 获取类的名称信息:Class类是一个泛型类,主要方法
getName()
、getSimpleName()
、getCanonicalName()
、getPackage()
- 获取字段信息:
getFields()
、getDeclaredFields()
、getField(String name)
、getDeclaredField(String name)
- 获取方法信息:
getMethods()
、getDeclaredMethods()
、getMethod(String name, Class<?>... paramenterTypes)
、getDeclaredMethod(String name, Class<?>... paramenterTypes)
- 获取构造器:
getConstructors()
、getDeclaredConstructors()
、getConstructor(Class<?>... paramenterTypes)
、getDeclaredConstructor(Class<?>... paramenterTypes)
- 创建对象:
getInstance()
,实际上也是调用的Constructor
中的无参构造方法。 - 类型信息:
isArray()
、isPrimitive()
… - 加载方法:是一个静态方法,用于加载类。
相关的类
Field
:位于java.lang.reflect包下,用于描述字段信息。Method
:位于java.lang.reflect包下,用于描述方法。可通过method.invoke(Object object, Object... args)
调用方法,object
是调用方法的对象,args
是参数列表。Constructor
:位于java.lang.reflect包下,描述构造方法,newInstance()
只能通过无参构造方法创建对象,而Constructor
可以通过有参构造方法创建。- 举例
// 创建了一个默认值为100的对象 Class clazz = StringBuilder.class; Constructor<StringBuilder> constructor = clazz.getConstructor(new Class[]{int.class}); StringBuilder sb = constructor.newInstance(100);
- 举例