台州网站策划,浙江省人才网官方网站建设厅招聘,即便你卖的是,平面设计创意先上两张图来系统的看一下反射的作用和具体的实现方法 接下来详细说一下反射的步骤以及之中使用的方法#xff1a;
获取Class对象#xff1a; 要使用反射#xff0c;首先需要获得一个Class对象#xff0c;该对象是反射的入口点。可以通过以下几种方式获取Class对象#x…先上两张图来系统的看一下反射的作用和具体的实现方法 接下来详细说一下反射的步骤以及之中使用的方法
获取Class对象 要使用反射首先需要获得一个Class对象该对象是反射的入口点。可以通过以下几种方式获取Class对象调用对象的getClass()方法。 使用Class.forName(String className)静态方法其中className是类的全限定名包括包名。 使用.class语法例如String.class。 通过类加载器的loadClass(String name)方法。 检查类信息 一旦有了Class对象就可以使用它来获取类的各种信息如类名、修饰符、父类、实现的接口、注解等。创建对象 可以使用Class对象的newInstance()方法或getDeclaredConstructor().newInstance()方法来创建该类的实例。对于有参构造函数的类需要使用getDeclaredConstructor(Class?... parameterTypes).newInstance(Object... initargs)。访问字段 可以使用Class对象的getField(String name)或getDeclaredField(String name)方法来获取字段Field对象然后使用字段对象的get(Object obj)和set(Object obj, Object value)方法来访问和修改字段值。调用方法 可以使用Class对象的getMethod(String name, Class?... parameterTypes)或getDeclaredMethod(String name, Class?... parameterTypes)方法来获取方法Method对象然后使用方法对象的invoke(Object obj, Object... args)方法来调用方法。
调用父类getsuperclass和getinterfaces
其中需要注意的是如果要访问非public的成员需要设置setAccessible(true)但是使用反射来访问非public成员破坏了封装性可能会带来安全性和稳定性问题因此除非确实必要通常不推荐这样做。