目录
getFields和getDeclaredFields区别:
获取类的Class对象
方法 | 编程调用方法 |
调用getClass | `Boolean var1 = true; Class<?> classType2 = var1.getClass(); System.out.println(classType2); ` 输出:class java.lang.Boolea |
运用.class 语法 | `Class<?> classType4 = Boolean.class; <br /> System.out.println(classType4);` 输出:class java.lang.Boolean |
运用静态方法Class.forName() | `Class<?> classType5 = Class.forName("java.lang.Boolean"); System.out.println(classType5); ` 输出:class java.lang.Boolean |
运用primitive wrapper classes的TYPE语法,这里返回的是原生类型,和Boolean.class返回的不同 | `Class<?> classType3 = Boolean.TYPE; System.out.println(classType3);` 输出:boolean |
获取构造方法
通过反射机制得到某个类的构造器,然后调用该构造器创建该类的一个实例。`Class<T>`类提供了几个方法获取类的构造器。
方法 | 说明 |
`Constructor<T> getConstructor(Class<?>... parameterTypes)` | 返回一个 Constructor 对象,它反映此 Class 对象所表示的类的指定公共构造方法 |
`Constructor<?>[] getConstructors()` | 返回一个包含某些 Constructor 对象的数组,这些对象反映此 Class 对象所表示的类的所有公共构造方法 |
`Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes)` | 返回一个 Constructor 对象,该对象反映此 Class 对象所表示的类或接口的指定构造方法 |
`Constructor<?>[] getDeclaredConstructors()` | 返回 Constructor 对象的一个数组,这些对象反映此 Class 对象表示的类声明的所有构造方法。它们是公共、保护、默认(包)访问和私有构造方法 |
获取类属性
获取类的Fields。可以通过反射机制得到某个类的某个属性,然后改变对应于这个类的某个实例的该属性值。JAVA 的`Class<T>`类提供了几个方法获取类的属性。
方法 | 说明 |
Field getField(String name) | 返回一个 Field 对象,它反映此 Class 对象所表示的类或接口的指定公共成员字段 |
Field[] getFields() | 返回一个包含某些 Field 对象的数组,这些对象反映此 Class 对象所表示的类或接口的所有可访问公共字段 |
Field getDeclaredField(String name) | 返回一个 Field 对象,该对象反映此 Class 对象所表示的类或接口的指定已声明字段 |
Field[] getDeclaredFields() | 返回 Field 对象的一个数组,这些对象反映此 Class 对象所表示的类或接口所声明的所有字段 |
getFields和getDeclaredFields区别:
- getFields返回的是申明为public的属性,包括父类中定义,
- getDeclaredFields返回的是指定类定义的所有定义的属性,不包括父类的。
获取类中的方法
通过反射机制得到某个类的某个方法,然后调用对应于这个类的某个实例的该方法。Class<T>类提供了几个方法获取类的方法。
方法 | 说明 |
`Method getMethod(String name, Class<?>... parameterTypes)` | 返回一个 Method 对象,它反映此 Class 对象所表示的类或接口的指定公共成员方法 |
Method[] getMethods() | 返回一个包含某些 Method 对象的数组,这些对象反映此 Class 对象所表示的类或接口(包括那些由该类或接口声明的以及从超类和超接口继承的那些的类或接口)的公共 member 方法 |
`Method getDeclaredMethod(Stringname, Class<?>... parameterTypes)` | 返回一个 Method 对象,该对象反映此 Class 对象所表示的类或接口的指定已声明方法 |
Method[] getDeclaredMethods() | 返回 Method 对象的一个数组,这些对象反映此 Class 对象表示的类或接口声明的所有方法,包括公共、保护、默认(包)访问和私有方法,但不包括继承的方法 |