java 中getDeclaredFields() 与getFields() 的区别
getDeclaredFields()返回Class中所有的字段,包括私有字段。例证:
- package com.test.bean;
- import java.sql.Timestamp;
- public class Person2 {
- private int id;
- private int age;
- private String personName;
- private Timestamp birthdate;
- public String identitify;
- protected String address;
- String phone;
- }
- @Test
- public void test_getDeclaredFields() {
- Field[]fields=Person2.class.getDeclaredFields();
- for (int i = 0; i < fields.length; i++) {
- Field field = fields[i];
- System.out.println(field.getName());
- }
- }
package com.test.bean; import java.sql.Timestamp; public class Person2 { private int id; private int age; private String personName; private Timestamp birthdate; public String identitify; protected String address; String phone; } @Test public void test_getDeclaredFields() { Field[]fields=Person2.class.getDeclaredFields(); for (int i = 0; i < fields.length; i++) { Field field = fields[i]; System.out.println(field.getName()); } }
运行结果:
id
age
personName
birthdate
identitify
address
phone
getFields 只返回公共字段,即有public修饰的字段。例证:
- @Test
- public void test_getDeclaredFields() {
- Field[]fields=Person2.class.getFields();
- for (int i = 0; i < fields.length; i++) {
- Field field = fields[i];
- System.out.println(field.getName());
- }
- }
@Test public void test_getDeclaredFields() { Field[]fields=Person2.class.getFields(); for (int i = 0; i < fields.length; i++) { Field field = fields[i]; System.out.println(field.getName()); } }
运行结果如下:
identitify
总结:
(1)getDeclaredFields()返回Class中所有的字段,包括私有字段;
(2)getFields 只返回公共字段,即有public修饰的字段
相关推荐
Java反射是Java编程语言中的一个强大特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在Java中,反射机制的核心类是`java.lang.Class`,它代表了类的信息。当我们需要在运行时动态地...
如`newInstance()`用于创建类的新实例,`getConstructors()`和`getDeclaredConstructors()`获取构造器,`getMethod()`和`getDeclaredMethod()`获取方法,`getFields()`和`getDeclaredFields()`获取字段。 2. 构造器...
尽管“反射”一词在计算机科学中有着全新的含义,但它与物理学中的反射原理在某些方面存在相似之处,这有助于我们理解其概念。 在计算机科学中,反射通常指能够自描述和自控制的应用。具体而言,这类应用可以通过...
Java反射是Java编程语言中的一个强大工具,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在Java中,反射主要用于在运行时分析类和对象,包括访问私有成员、调用私有方法、创建对象、获取类...
- ORM框架:如Hibernate、MyBatis等,通过反射实现数据库中的对象与Java实体之间的映射。 - 框架设计:Spring框架大量使用反射进行依赖注入,提高代码的可扩展性和灵活性。 - 执行私有方法或访问私有字段:在测试和...
3. **访问字段**:通过`Class`对象的`getFields()`或`getDeclaredFields()`方法获取所有公共或私有字段,然后使用`Field`对象的`get()`或`set()`方法读取或修改对象的字段值。 4. **调用方法**:使用`Class`对象的`...
使用`getFields()`获取公共字段,`getDeclaredFields()`获取所有字段,然后通过`set()`和`get()`方法操作字段。 2. 访问方法:`Method`类代表类的方法。`getMethods()`获取公共方法,`getDeclaredMethods()`获取...
Java反射是Java编程语言中的一个强大特性,允许在运行时检查和操作类、接口、字段和方法的信息。在"Java Reflection in Action"这本书中,作者深入探讨了这一主题,为开发者提供了全面的理解和实践指导。以下是对这...
Java反射是Java编程语言中的一个强大工具,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在Java中,反射主要用于在运行时分析类和对象的信息,包括类名、方法名、参数类型等。对于"java...
`getFields()`获取所有公共字段,`getDeclaredFields()`获取所有声明的字段。`get(Object obj)`和`set(Object obj, Object value)`用于读取和设置字段值。 5. **泛型和反射**:虽然Java反射不直接支持泛型,但可以...
Java中的反射机制是一种强大的编程工具,它允许程序员在运行时检查和操作类、接口、字段和方法等对象的内部信息,而无需预先知道具体的类名或方法名。反射的概念源于1982年Smith的提出,它使得软件具有自我描述和...
### JAVA中的反射机制详解 #### 一、反射机制概述 反射是Java编程语言的一个核心特性,它使得程序能够在运行时动态地访问、检测和修改其自身的结构和行为。这一概念最早由Smith在1982年提出,并迅速引起了计算机...
- **获取属性**:通过`Class.getDeclaredFields()`或`Class.getFields()`方法可以获取类的所有字段,然后通过`Field`对象的`getName()`方法获取属性名。 - **访问和修改属性值**:使用`Field`的`get(Object obj)`...
`getFields()`获取公共字段,`getDeclaredFields()`获取所有字段。反射允许我们读取和修改私有字段的值,这对于调试、测试或特殊逻辑很有用。 在Java反射机制中,`AccessibleObject`接口扮演着关键角色。它是`...
通过`Class`的`getDeclaredFields()`或`getFields()`获取字段,然后使用`set()`和`get()`方法对字段进行读写操作,包括访问私有字段。 4. 调用方法:`Method`类代表类的方法。`Class`的`getDeclaredMethods()`或`...
`getDeclaredFields()`, `getDeclaredMethods()`, `getDeclaredConstructors()`用于获取类的所有字段、方法和构造器,而`getFields()`, `getMethods()`, `getConstructors()`则只返回公共的成员;`newInstance()`...
例如,`Class`对象的`getFields()`和`getDeclaredFields()`方法可获取公有和私有字段。 3. `Method` 类:代表类的方法,提供了动态调用方法的能力。`Class`对象的`getMethods()`和`getDeclaredMethods()`方法可获取...
- **获取字段**:通过`getFields()`获取公共字段,`getDeclaredFields()`获取所有字段,包括私有和受保护的。 - **读写字段值**:`getField()`返回Field对象,然后使用`get()`和`set()`方法读取或设置对象的字段值...
4. 访问类的属性:通过Class对象的getFields()和getField()方法可以获取类的公共字段,通过getDeclaredFields()和getDeclaredField()方法可以获取包括私有的所有字段。 5. 调用方法:通过Class对象的getMethods()和...
使用`getFields()`或`getField()`方法获取类的公共字段,`getDeclaredFields()`获取所有字段(包括私有和受保护的)。然后,可以使用`set()`和`get()`方法来设置或获取字段的值。 ```java Field field = clazz....