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()); } }
运行结果:
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()); } }
运行结果如下:
identitify
总结:
(1)getDeclaredFields()返回Class中所有的字段,包括私有字段;
(2)getFields 只返回公共字段,即有public修饰的字段
相关推荐
3. **对象与Class的关系**:每个Java对象都有一个隐藏的`class`字段,存储着该对象所属类的Class对象的引用。这意味着我们可以通过`obj.getClass()`获取任何对象的Class对象。 4. **类加载器**:Class对象与类加载...
在给出的“JavaClass”示例中,可能包含了一个或多个展示如何使用Java反射的代码片段,可能涉及到创建`Class`对象、获取和调用方法、访问字段等内容。通过分析这些例子,你可以更深入地理解Java反射的使用方式及其在...
4. 访问类的属性:通过Class对象的getFields()和getField()方法可以获取类的公共字段,通过getDeclaredFields()和getDeclaredField()方法可以获取包括私有的所有字段。 5. 调用方法:通过Class对象的getMethods()和...
3. **访问字段**:通过`Class`对象的`getFields()`或`getDeclaredFields()`方法获取所有公共或私有字段,然后使用`Field`对象的`get()`或`set()`方法读取或修改对象的字段值。 4. **调用方法**:使用`Class`对象的`...
使用`getFields()`方法可以获取到类的所有public字段,如果需要获取包括私有的和受保护的字段,可以使用`getDeclaredFields()`方法。这些`Field`对象提供了设置和获取字段值的能力,通过`set()`和`get()`方法。 `...
Class<?> clazz = Class.forName("java.lang.String"); ``` 3. **使用类型名`.class`**: 直接使用类名或数组类型的`.class`属性。 ```java Class<?> clazz = Integer.class; Class<?> clazz2 = int[].class; `...
根据给定的信息,我们可以总结出本篇JAVA上课笔记class_07主要讲解的是Java反射机制的相关知识点。反射机制是Java语言的一个重要特性,它允许在运行时检查类、接口、字段和方法等信息,并能够创建对象及调用方法。...
`Class`对象提供了`getFields()`方法,它返回所有公共字段,而`getDeclaredFields()`则返回所有字段(包括私有和受保护的)。假设`Robot`类有一个名为`name`的公共字段,可以这样获取它: ```java Field nameField ...
通过`Class`对象的`getFields()`和`getDeclaredFields()`方法可以获得一个类的所有字段信息。 ```java Field[] fields = clazz.getDeclaredFields(); for (Field field : fields) { System.out.println(field); } ...
- **获取属性**:通过`Class.getDeclaredFields()`或`Class.getFields()`方法可以获取类的所有字段,然后通过`Field`对象的`getName()`方法获取属性名。 - **访问和修改属性值**:使用`Field`的`get(Object obj)`...
2. 使用`Class.forName(String className)`静态方法:通过类的全限定名获取Class对象,如`Class c1 = Class.forName("java.lang.String");` 3. 使用`.class`语法:直接在类名后加上`.class`,例如`Class c1 = ...
4. **Field对象**:表示类的字段(属性),`Class.getFields()`获取公共字段,`Class.getDeclaredFields()`获取所有字段。 **使用Java反射的基本步骤** 1. 获取Class对象:如`Class<?> clazz = Class.forName("全...
通过`Class`的`getDeclaredFields()`或`getFields()`获取字段,然后使用`set()`和`get()`方法对字段进行读写操作,包括访问私有字段。 4. 调用方法:`Method`类代表类的方法。`Class`的`getDeclaredMethods()`或`...
2. **获取类的Fields**:使用`Class.getFields()`或`Class.getDeclaredFields()`方法可以获取类的公共字段或所有声明的字段。 3. **获取类的Method**:使用`Class.getMethods()`或`Class.getDeclaredMethods()`方法...
`Class`对象的`getFields()`获取公共字段,`getDeclaredFields()`获取所有字段。`Field`对象的`get()`和`set()`方法用于读取和设置字段值。 Java反射的应用场景广泛,例如: - 动态代理:Java的`Proxy`类和`...
6. 对象空间(Object Space)与类空间(Class Space): - 对象空间:存储实际对象的数据,每个对象都有自己的内存空间,包含其属性的值。 - 类空间:存储类的元数据,如类的结构、属性、方法等信息,是所有对象...
`Class`类提供了`getFields()`方法,它返回类的所有公共字段;如果需要获取私有或受保护的字段,可以使用`getDeclaredFields()`。以下是如何获取并打印`Person`类所有字段的示例: ```java Class<?> clazz = Class....
2. **获取类的字段(Fields)**:通过Class对象的`getFields()`和`getDeclaredFields()`方法,可以获取到类的所有公共字段和所有字段,包括私有字段。`setAccessible(true)`可以用来绕过访问限制。 3. **调用方法...
可以使用`Class`对象的`getDeclaredFields()`或`getFields()`方法来获取所有的字段信息。`getDeclaredFields()`返回所有声明的字段,而`getFields()`只返回公共字段。 ##### 2.3 Method对象 `Method`对象表示类中...