一、概述

Field是一个类,位于java.lang.reflect包下。在Java反射中Field类描述的是类的属性信息,功能包括:

  • 获取当前对象的成员变量的类型
  • 对成员变量重新设值

二、如何获取Field类对象

  • getField(String name): 获取类特定的方法,name参数指定了属性的名称
  • Class.getFields(): 获取类中public类型的属性,返回一个包含某些 Field 对象的数组,该数组包含此 Class 对象所表示的类或接口的所有可访问公共字段
  • getDeclaredField(String name): 获取类特定的方法,name参数指定了属性的名称
  • getDeclaredFields(): 获取类中所有的属性(public、protected、default、private),但不包括继承的属性,返回 Field 对象的一个数组

三、Field 类对象常用方法

1.获取变量的类型:

  • Field.getType():返回这个变量的类型
  • Field.getGenericType():如果当前属性有签名属性类型就返回,否则就返回 Field.getType()
  • isEnumConstant() : 判断这个属性是否是枚举类

2.获取成员变量的修饰符:

  • Field.getModifiers()  以整数形式返回由此 Field 对象表示的字段的 Java 语言修饰符

3.获取和修改成员变量的值

  • getName() : 获取属性的名字
  • get(Object obj) 返回指定对象obj上此 Field 表示的字段的值
  • set(Object obj, Object value) 将指定对象变量上此 Field 对象表示的字段设置为指定的新值

四、实践代码

1.获取对象中的所有字段名

//获取所有字段名
Field[] declaredFields = FinancieWaybillPageListVo.class.getDeclaredFields();
List<String> columnList = new ArrayList<>();
for (Field declaredField : declaredFields) {String name = declaredFields.getName();if ("CustomColumnVo".equals(name)) {continue;}columnList.add(name);
}
userCustomColumn.setColumnName(columnList);

 2.获取对象中的所有属性的值

        // 查询对应的销货清单数据List<SalesListVo> lists = getSalesList(dto);List<Object> salesList = new ArrayList<>();for (SalesListVo sales : lists) {// 获取所有的属性数组Field[] fields = sales.getClass().getDeclaredFields();for (Field field : fields) {//设置允许通过反射访问私有变量field.setAccessible(true);//获取字段的值try {salesList.add(field.get(sales));} catch (IllegalAccessException e) {throw new RuntimeException(e);}}}

如果这篇文章对您有所帮助,或者有所启发的话,求一键三连:点赞、评论、收藏➕关注,您的支持是我坚持写作最大的动力。

java反射之Field用法(获取对象的字段名和属性值)相关推荐

  1. 【java】java反射机制,动态获取对象的属性和对应的参数值,并属性按照字典序排序,Field.setAccessible()方法的说明【可用于微信支付 签名生成】...

    方法1:通过get()方法获取属性值 package com.sxd.test.controller;public class FirstCa{private Integer num;private ...

  2. Java不同对象判断字段名一致的值是否一致,同时记录在册方便查看

    最近项目中遇到了需要对整表数据进行比对是否改变,以及数字类型改变后是变大了还是变小了,想着几个字段随便写写if-else算了, 结果瓦特了,170个字段,搞不了搞不来,写方法把开撸 tps: 方法仅供 ...

  3. 通过Java反射获取对象上的注解,java反射注解妙用-获取所有接口说明

    原标题:java反射注解妙用-获取所有接口说明 转载请注明出处:https://www.cnblogs.com/wenjunwei/p/10293490.html 前言 最近在做项目权限,使用shir ...

  4. java反射的field.get(null)

    转载自  java反射的field.get(null) 在java的反射中,通过字段获取对象,是通过 public Object get(Object obj) 字段不是静态字段的话,要传入反射类的对 ...

  5. java反射实现自定义json转对象方法-忽略字段大小写、字段个数

    java反射实现自定义json转对象方法-忽略字段大小写.字段个数 开发过程中经常会遇到json转对象,可以使用FastJson或者Gson自带的工具类进行转换,但当遇到json与对象属性名称大小写不 ...

  6. Java 反射机制[Field反射]

    Java 反射机制[Field反射] 1.  反射概念及功能 反射就是把Java类中的各种成分映射成对应的Java类.比如一个Java类中用一个Class类的对象来表示. 一个类中的组成部分分为成员变 ...

  7. java reflections_关于java:java反射工具Reflections用法

    java反射工具Reflections用法 一.引入maven依赖 org.reflections reflections 0.9.10 二.用法示例: reflections 中蕴含很多的Scann ...

  8. java中遍历实体类,获取属性名和属性值

    方式一(实体类): //java中遍历实体类,获取属性名和属性值public static void testReflect(Object model) throws Exception{for (F ...

  9. 获取对象的接口信息(方法/属性/事件)(VB6代码)

    要不是WS的超级绿豆提起这东西,我还不知道呢.... 真是个好玩意!!能列出一个对象的接口,包括方法,属性,事件.....微软直接做了啊. 记录一下,以后要用到时免得忘了: Option Explic ...

最新文章

  1. scroll-苹果滑动卡顿
  2. tendermint+java_tendermint简介
  3. latch.await java有什么作用_java相关:CountDownLatch源码解析之await()
  4. 手误【删库】 == 跑路,不存在的 ——删瓦辛格
  5. 【C语言实现反转数组】(用栈实现)51nod - 训练营
  6. AngularJS操作DOM——angular.element
  7. 摄影测量--相对定向-绝对定向(C++实现)
  8. Pandas-层次化索引
  9. 循环神经网络_漫谈循环神经网络:LSTM、GRU
  10. request如何获取请求路径方法
  11. [序列化] SerializeHelper--序列化操作帮助类 (转载)
  12. 安川ga700变频器故障码集_安川变频器CPF故障码集
  13. SSH远程登录原理学习
  14. 关于启动报错:Field xxxMapper in com.xxx.service.impl.xxxServiceImpl required a bean of type的解决方案
  15. Scratch之小猫酷跑我设计
  16. 小米笔记本电脑我的计算机图标不见了怎么办,毕业论文致谢结尾800字范文_本科毕业论文致谢结尾通用...
  17. mathtype向上取整函数
  18. Ajax简单实现注册用户名校验
  19. 2022深圳国际医疗器械展览会
  20. 清华四年,我学到了什么?

热门文章

  1. 关于如何更换google play地区教程
  2. Prometheus学习笔记(三)Alertmanager报警模块集成钉钉/企业微信机器人
  3. 抖音网红小姐姐和她的老板带你玩转阿里云双11
  4. oracle rac 主库,oracle11gRAC+DG主库增加数据文件
  5. Linux02—文本编辑命令、用户管理、组管理、权限管理
  6. mysql 新闻类表_mysql 数据库 新闻类型
  7. 王者之力,驭见未来 | 圣戈班量子膜全国核心店面大会圆满落幕!
  8. bootstrap侧边伸缩菜单
  9. VS Code快捷键大全(简约版)
  10. JHipster------使用JDL-Studio自动生成代码