
java如何反射想反射的类
常见问答
如何通过Java反射获取指定类的Class对象?
我想使用Java反射来操作某个类,怎样才能获取到这个类的Class对象?
使用Class.forName()或类名.class获取Class对象
在Java中,可以通过Class.forName("全类名")方法来获取指定类的Class对象,适用于类名在运行时才确定的场景。如果类在编译时已知,也可以直接使用类名.class来获取。例如:Class<?> clazz = Class.forName("com.example.MyClass");或Class clazz = MyClass.class。
如何创建反射得到的类的实例对象?
已经用反射获得了某个类的Class对象,怎么创建这个类的新实例?
通过Class的newInstance方法或构造器创建实例
通过反射获取到Class对象后,可以调用clazz.getDeclaredConstructor().newInstance()来创建类的新实例。需要注意的是,Class.newInstance()方法已经过时,推荐使用获取无参构造器后调用newInstance()。如果类没有无参构造器,可以通过getDeclaredConstructor(参数类型).newInstance(参数)方式进行构造。
如何通过反射调用类的方法?
用反射拿到类的实例后,怎样调用它的方法?
利用Method对象及invoke方法执行类的方法
先通过Class对象的getDeclaredMethod("方法名", 参数类型.class, ...)获取目标方法,方法返回一个Method对象。通过Method对象的invoke(实例对象, 参数...)可以调用该方法。需要处理可能抛出的异常,且可以通过setAccessible(true)访问私有方法。