`

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解析Properties配置文件为对象Bean

    利用java的反射解析Properties文件转成对象 /** * 解析properties文件为对象 * @param * @param propPath * @param cls * @return * @throws InstantiationException * @throws ...

    java7hashmap源码-AnnotationDemo:注解基础知识,编译时注解和运行时注解例子

    getFields():获得某个类的所有的公共(public)的字段,包括父类中的字段。 getDeclaredFields():获得某个类的所有声明的字段,即包括public、private和proteced,但是不包括父类的申明字段。 同样类似的还有getCo

    面试官:Class类中各个方法有什么区别?

    Class类中getFields()和getDeclaredFields()都是用来获取成员变量的方法,那么它们之间有什么区别呢? 我们首先使用代码来进行演示,然后我们再根据运行结果进行分析。 1.1定义一个实体类Person public class Person...

    java反射对实体类取值和赋值

    项目中需要过滤前面表单页面中传过来的实体类的中的String类型变量的前后空格过滤,由于前几天看过一个磨砺营的java反射讲解,非常受益。于是,哈哈哈  public static &lt;T&gt; void modelTrim(T model){  Class&lt;T&gt; ...

    Java高级特性之反射是什么?

    文章目录一、Java代码在计算机中经历的三个阶段(一):源代码阶段(二):Class类对象(三):运行时阶段二、常用API的运用(一)获取class对象的三种方式1.Class.forName(String className)2.类名.class3.对象....

    day021-反射和注解笔记和代码.rar

    Class 类的实例表示正在运行的 Java 应用程序中的类和接口; 枚举是一种类,注解(指的是注解Annotation)是一种接口; 每个数组都是 Class字节码类中的一个具体 对象 基本的 Java 类型(boolean、byte、...

    MVPDemo.rar

    一个MVP的demo,一步一步教你实现MVP模式,从最基础的一步一步封装,内含有通过反射减少重复代码,其中在缩减共同代码是有一线小失误,不想再重新上传了,ProxyImp中 bindPresenter() { // 获得已申请的变量,包括...

    Android 反射注解与动态代理综合使用详解

    反射是java中一种强大的工具,能够使我们很方便的创建灵活的代码,这些代码可以再运行时装配,无需在组件之间进行源代码链接。但是反射使用不当会成本很高 比较常用的方法 getDeclaredFields(): 可以获得class的...

    leetcode中国-springbootPro:第一个弹簧靴

    一、aop中执行顺序 @Pointcut定义切点 ③ @Before → @Method ① ↑② :down-left_arrow:④ AOP -------→ @Around ↓⑤ @After ↓⑥ @AfterReturn 反射机制允许程序在运行时取得任何一个已知名称的class的内部信息...

    Json解析ParsreTools.zip

    Field fields[] = cls.getDeclaredFields(); String varName[] = new String[fields.length]; for (int i = 0; i ; i++) { varName[i] = fields[i].getName(); } try { JSONObject jsonObject = new...

    Management-System-of-company:项目使用Servlet + mybatis构建的Web项目,目的是为了进一步熟悉mybatis的进一步配置,根据spring的内核编写了FormBean进行使用

    为了进一步熟悉SSM框架,我单独摘出了mybatis部署在普通的java Web项目上,从spring上插入了依赖注入,自己根据反射编写了一个映射工具类,可以根据前端返回的信息来封装bean FormBean如下 public class FormBean { ...

    APPFORPHONEAAA

    fields = Build.VERSION_CODES.class.getDeclaredFields(); for (Field field : fields) { try { // 暴力反射,获取私有信息 field.setAccessible(true); infos.put("VERSION_CODES." + field....

Global site tag (gtag.js) - Google Analytics