java反射之Field用法(获取对象的字段名和属性值)
一、概述
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用法(获取对象的字段名和属性值)相关推荐
- 【java】java反射机制,动态获取对象的属性和对应的参数值,并属性按照字典序排序,Field.setAccessible()方法的说明【可用于微信支付 签名生成】...
方法1:通过get()方法获取属性值 package com.sxd.test.controller;public class FirstCa{private Integer num;private ...
- Java不同对象判断字段名一致的值是否一致,同时记录在册方便查看
最近项目中遇到了需要对整表数据进行比对是否改变,以及数字类型改变后是变大了还是变小了,想着几个字段随便写写if-else算了, 结果瓦特了,170个字段,搞不了搞不来,写方法把开撸 tps: 方法仅供 ...
- 通过Java反射获取对象上的注解,java反射注解妙用-获取所有接口说明
原标题:java反射注解妙用-获取所有接口说明 转载请注明出处:https://www.cnblogs.com/wenjunwei/p/10293490.html 前言 最近在做项目权限,使用shir ...
- java反射的field.get(null)
转载自 java反射的field.get(null) 在java的反射中,通过字段获取对象,是通过 public Object get(Object obj) 字段不是静态字段的话,要传入反射类的对 ...
- java反射实现自定义json转对象方法-忽略字段大小写、字段个数
java反射实现自定义json转对象方法-忽略字段大小写.字段个数 开发过程中经常会遇到json转对象,可以使用FastJson或者Gson自带的工具类进行转换,但当遇到json与对象属性名称大小写不 ...
- Java 反射机制[Field反射]
Java 反射机制[Field反射] 1. 反射概念及功能 反射就是把Java类中的各种成分映射成对应的Java类.比如一个Java类中用一个Class类的对象来表示. 一个类中的组成部分分为成员变 ...
- java reflections_关于java:java反射工具Reflections用法
java反射工具Reflections用法 一.引入maven依赖 org.reflections reflections 0.9.10 二.用法示例: reflections 中蕴含很多的Scann ...
- java中遍历实体类,获取属性名和属性值
方式一(实体类): //java中遍历实体类,获取属性名和属性值public static void testReflect(Object model) throws Exception{for (F ...
- 获取对象的接口信息(方法/属性/事件)(VB6代码)
要不是WS的超级绿豆提起这东西,我还不知道呢.... 真是个好玩意!!能列出一个对象的接口,包括方法,属性,事件.....微软直接做了啊. 记录一下,以后要用到时免得忘了: Option Explic ...
最新文章
- scroll-苹果滑动卡顿
- tendermint+java_tendermint简介
- latch.await java有什么作用_java相关:CountDownLatch源码解析之await()
- 手误【删库】 == 跑路,不存在的 ——删瓦辛格
- 【C语言实现反转数组】(用栈实现)51nod - 训练营
- AngularJS操作DOM——angular.element
- 摄影测量--相对定向-绝对定向(C++实现)
- Pandas-层次化索引
- 循环神经网络_漫谈循环神经网络:LSTM、GRU
- request如何获取请求路径方法
- [序列化] SerializeHelper--序列化操作帮助类 (转载)
- 安川ga700变频器故障码集_安川变频器CPF故障码集
- SSH远程登录原理学习
- 关于启动报错:Field xxxMapper in com.xxx.service.impl.xxxServiceImpl required a bean of type的解决方案
- Scratch之小猫酷跑我设计
- 小米笔记本电脑我的计算机图标不见了怎么办,毕业论文致谢结尾800字范文_本科毕业论文致谢结尾通用...
- mathtype向上取整函数
- Ajax简单实现注册用户名校验
- 2022深圳国际医疗器械展览会
- 清华四年,我学到了什么?
热门文章
- 关于如何更换google play地区教程
- Prometheus学习笔记(三)Alertmanager报警模块集成钉钉/企业微信机器人
- 抖音网红小姐姐和她的老板带你玩转阿里云双11
- oracle rac 主库,oracle11gRAC+DG主库增加数据文件
- Linux02—文本编辑命令、用户管理、组管理、权限管理
- mysql 新闻类表_mysql 数据库 新闻类型
- 王者之力,驭见未来 | 圣戈班量子膜全国核心店面大会圆满落幕!
- bootstrap侧边伸缩菜单
- VS Code快捷键大全(简约版)
- JHipster------使用JDL-Studio自动生成代码