`

java 中getDeclaredFields() 与getFields() 的区别

 
阅读更多

java 中getDeclaredFields() 与getFields() 的区别

 

getDeclaredFields()返回Class中所有的字段,包括私有字段。例证:

Java代码 复制代码 收藏代码
  1. package com.test.bean;  
  2.   
  3. import java.sql.Timestamp;  
  4.   
  5. public class Person2 {  
  6.     private int id;  
  7.     private int age;  
  8.     private String personName;  
  9.     private Timestamp birthdate;  
  10.     public String identitify;  
  11.     protected String address;  
  12.     String phone;  
  13.       
  14. }  
  15. @Test  
  16.     public void test_getDeclaredFields() {  
  17.         Field[]fields=Person2.class.getDeclaredFields();  
  18.         for (int i = 0; i < fields.length; i++) {  
  19.             Field field = fields[i];  
  20.             System.out.println(field.getName());  
  21.         }  
  22.     }  
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修饰的字段。例证:

Java代码 复制代码 收藏代码
  1. @Test  
  2.     public void test_getDeclaredFields() {  
  3.         Field[]fields=Person2.class.getFields();  
  4.         for (int i = 0; i < fields.length; i++) {  
  5.             Field field = fields[i];  
  6.             System.out.println(field.getName());  
  7.         }  
  8.     }  
@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程序对自身进行检查并且可以直接操作程序的内部属性。在Java中,反射机制的核心类是`java.lang.Class`,它代表了类的信息。当我们需要在运行时动态地...

    java中的反射reflect

    如`newInstance()`用于创建类的新实例,`getConstructors()`和`getDeclaredConstructors()`获取构造器,`getMethod()`和`getDeclaredMethod()`获取方法,`getFields()`和`getDeclaredFields()`获取字段。 2. 构造器...

    Java中的反射机制

    尽管“反射”一词在计算机科学中有着全新的含义,但它与物理学中的反射原理在某些方面存在相似之处,这有助于我们理解其概念。 在计算机科学中,反射通常指能够自描述和自控制的应用。具体而言,这类应用可以通过...

    java反射,获取所有属性、方法以及List集合类

    Java反射是Java编程语言中的一个强大工具,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在Java中,反射主要用于在运行时分析类和对象,包括访问私有成员、调用私有方法、创建对象、获取类...

    java发射demo

    - ORM框架:如Hibernate、MyBatis等,通过反射实现数据库中的对象与Java实体之间的映射。 - 框架设计:Spring框架大量使用反射进行依赖注入,提高代码的可扩展性和灵活性。 - 执行私有方法或访问私有字段:在测试和...

    JAVA反射机制的入门代码

    3. **访问字段**:通过`Class`对象的`getFields()`或`getDeclaredFields()`方法获取所有公共或私有字段,然后使用`Field`对象的`get()`或`set()`方法读取或修改对象的字段值。 4. **调用方法**:使用`Class`对象的`...

    java学习——java中的反射学习笔记.rar_java 反射

    使用`getFields()`获取公共字段,`getDeclaredFields()`获取所有字段,然后通过`set()`和`get()`方法操作字段。 2. 访问方法:`Method`类代表类的方法。`getMethods()`获取公共方法,`getDeclaredMethods()`获取...

    Java Reflection in Action

    Java反射是Java编程语言中的一个强大特性,允许在运行时检查和操作类、接口、字段和方法的信息。在"Java Reflection in Action"这本书中,作者深入探讨了这一主题,为开发者提供了全面的理解和实践指导。以下是对这...

    java反射实现Object转json

    Java反射是Java编程语言中的一个强大工具,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在Java中,反射主要用于在运行时分析类和对象的信息,包括类名、方法名、参数类型等。对于"java...

    java reflection in action

    `getFields()`获取所有公共字段,`getDeclaredFields()`获取所有声明的字段。`get(Object obj)`和`set(Object obj, Object value)`用于读取和设置字段值。 5. **泛型和反射**:虽然Java反射不直接支持泛型,但可以...

    JAVA中的反射机制

    Java中的反射机制是一种强大的编程工具,它允许程序员在运行时检查和操作类、接口、字段和方法等对象的内部信息,而无需预先知道具体的类名或方法名。反射的概念源于1982年Smith的提出,它使得软件具有自我描述和...

    JAVA中的反射机制(内含大量实例).doc

    ### JAVA中的反射机制详解 #### 一、反射机制概述 反射是Java编程语言的一个核心特性,它使得程序能够在运行时动态地访问、检测和修改其自身的结构和行为。这一概念最早由Smith在1982年提出,并迅速引起了计算机...

    Java Bean 遍历和使用注解给Bean的属性添加属性值

    - **获取属性**:通过`Class.getDeclaredFields()`或`Class.getFields()`方法可以获取类的所有字段,然后通过`Field`对象的`getName()`方法获取属性名。 - **访问和修改属性值**:使用`Field`的`get(Object obj)`...

    Reflection_in_Java.zip_in_java 反射_java 反射机制_java反射_反射机制

    `getFields()`获取公共字段,`getDeclaredFields()`获取所有字段。反射允许我们读取和修改私有字段的值,这对于调试、测试或特殊逻辑很有用。 在Java反射机制中,`AccessibleObject`接口扮演着关键角色。它是`...

    JAVA反射机制和JDBC和各种数据库的连接

    通过`Class`的`getDeclaredFields()`或`getFields()`获取字段,然后使用`set()`和`get()`方法对字段进行读写操作,包括访问私有字段。 4. 调用方法:`Method`类代表类的方法。`Class`的`getDeclaredMethods()`或`...

    圣思园 reflection(Java反射) 课件

    `getDeclaredFields()`, `getDeclaredMethods()`, `getDeclaredConstructors()`用于获取类的所有字段、方法和构造器,而`getFields()`, `getMethods()`, `getConstructors()`则只返回公共的成员;`newInstance()`...

    java反射model

    例如,`Class`对象的`getFields()`和`getDeclaredFields()`方法可获取公有和私有字段。 3. `Method` 类:代表类的方法,提供了动态调用方法的能力。`Class`对象的`getMethods()`和`getDeclaredMethods()`方法可获取...

    java中的反射机制(内含大量实例)

    - **获取字段**:通过`getFields()`获取公共字段,`getDeclaredFields()`获取所有字段,包括私有和受保护的。 - **读写字段值**:`getField()`返回Field对象,然后使用`get()`和`set()`方法读取或设置对象的字段值...

    JAVA反射机制与动态代理

    4. 访问类的属性:通过Class对象的getFields()和getField()方法可以获取类的公共字段,通过getDeclaredFields()和getDeclaredField()方法可以获取包括私有的所有字段。 5. 调用方法:通过Class对象的getMethods()和...

    Java反射简单例子

    使用`getFields()`或`getField()`方法获取类的公共字段,`getDeclaredFields()`获取所有字段(包括私有和受保护的)。然后,可以使用`set()`和`get()`方法来设置或获取字段的值。 ```java Field field = clazz....

Global site tag (gtag.js) - Google Analytics