除了java.lang.reflect.Proxy类和java.lang.reflect.InvocationHandler接口之外,Java的反射机制还提供了一些其他常用的类和方法,用于获取和操作类、方法、字段等元数据信息。以下是一些常用的Java反射类和方法:
java.lang.Class类:
forName(String className):根据类的完全限定名(包括包名)获取类的Class对象。
newInstance():创建该类的一个新实例。
getMethods():返回一个包含该类所有公共方法的数组。
getDeclaredMethods():返回一个包含该类所有声明的方法的数组,包括私有方法。
getFields():返回一个包含该类所有公共字段的数组。
getDeclaredFields():返回一个包含该类所有声明的字段的数组,包括私有字段。
getMethod(String name, Class<?>... parameterTypes):返回指定方法名和参数类型的公共方法。
getDeclaredMethod(String name, Class<?>... parameterTypes):返回指定方法名和参数类型的声明方法。
java.lang.reflect.Method类:
invoke(Object obj, Object... args):通过反射机制调用该方法。
getName():获取方法的名称。
getReturnType():获取方法的返回类型。
getParameters():获取方法的参数列表。
getParameterTypes():获取方法的参数类型列表。
java.lang.reflect.Field类:
get(Object obj):获取指定对象上该字段的值。
set(Object obj, Object value):将指定对象上该字段的值设置为指定的值。
getName():获取字段的名称。
getType():获取字段的类型。
java.lang.reflect.Constructor<T>类:
newInstance(Object... initargs):通过反射机制创建该构造函数对应类的新实例。
getParameters():获取构造函数的参数列表。
这些类和方法提供了丰富的功能,使得我们可以在运行时获取和操作类、方法和字段的信息。通过反射机制,我们可以动态地创建对象、调用方法、访问字段,以及获取类的元数据等,从而实现更灵活和动态的编程。