Class
Class 类的实例表示正在运行的 Java 应用程序中的类和接口。枚举是一种类,注释是一种接口。
Class
没有公共构造方法。Class
对象是在加载类时由 Java 虚拟机通过类加载器的 defineClass
方法自动构造。
public static Class<?> forName(String name, boolean initialize, ClassLoader loader)
T newInstance() 必须具备无参构造器
URL getResource(String name) 委托 ClassLoader.getSystemResource(java.lang.String)。
InputStream getResourceAsStream(String name) 委托 ClassLoader.getSystemResourceAsStream(java.lang.String)。
ClassLoader getClassLoader() 返回该类的类加载器。
public Constructor<?>[] getConstructors() 如果该类没有公共构造方法,或者该类是一个数组类,或者该类反映一个基本类型或 void,则返回一个长度为 0 的数组。
public Constructor<?>[] getDeclaredConstructors 如果此 Class 对象表示一个接口、一个基本类型、一个数组类或 void,则此方法返回一个长度为0的数组。
public Method[] getDeclaredMethods()
public Field[] getDeclaredFields()
public Field getDeclaredField(String name)
public Method getDeclaredMethod(String name, Class<?>... parameterTypes)
boolean isEnum()
boolean isArray()
boolean isAnnotation()
boolean isInterface()
boolean isPrimitive() 判定指定的 Class 对象是否表示一个基本类型。
boolean isInstance(Object obj) 判定指定的 Object 是否与此 Class 所表示的对象赋值兼容。
Method
String getName()
int getModifiers()
Class<?>[] getParameterTypes()
Class<?> getReturnType()
Object invoke(Object obj, Object... args)
如果底层方法是静态的,那么可以忽略指定的 obj 参数。该参数可以为 null。
如果底层方法所需的形参数为 0,则所提供的 args 数组长度可以为 0 或 null。
Construction
int getModifiers()
Class<?>[] getParameterTypes()
T newInstance(Object... initargs)
Field
Object get(Object obj)
Class<?> getType()
void set(Object obj, Object value) 如果底层字段是静态字段,则忽略 obj 变量;它可能为 null。
Proxy
static Object newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h)
static Class<?> getProxyClass(ClassLoader loader, Class<?>... interfaces)
static boolean isProxyClass(Class<?> cl)
interface InvocationHandler
Object invoke(Object proxy, Method method, Object[] args) throws Throwable