java反射获取Object的属性和值,包括单个对象,list集合里面的多个对象

java异常、反射与集合 (1)异常(2)error:错误,不能解决递归调用:自己的方法调用自己===》栈溢出:StackOverflowError。 阅读详情
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 反射处理Bean,得到里面的属性值
 * 
 * @author liulinsen
 *
 */
public class ReflexObjectUtil {

    /**
     * 单个对象的所有键值
     * 
     * @param object
     *            单个对象
     * 
     * @return Map<String, Object> map 所有 String键 Object值 ex:{pjzyfy=0.00,
     *         xh=01, zzyl=0.00, mc=住院患者压疮发生率, pjypfy=0.00, rs=0, pjzyts=0.00,
     *         czydm=0037, lx=921, zssl=0.00}
     */
    public static Map<String, Object> getKeyAndValue(Object obj) {
        Map<String, Object> map = new HashMap<String, Object>();
        // 得到类对象
        Class userCla = (Class) obj.getClass();
        /* 得到类中的所有属性集合 */
        Field[] fs = userCla.getDeclaredFields();
        for (int i = 0; i < fs.length; i++) {
            Field f = fs[i];
            f.setAccessible(true); // 设置些属性是可以访问的
            Object val = new Object();
            try {
                val = f.get(obj);
                // 得到此属性的值
                map.put(f.getName(), val);// 设置键值
            } catch (IllegalArgumentException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }

            /*
             * String type = f.getType().toString();//得到此属性的类型 if
             * (type.endsWith("String")) {
             * System.out.println(f.getType()+"\t是String"); f.set(obj,"12") ;
             * //给属性设值 }else if(type.endsWith("int") ||
             * type.endsWith("Integer")){
             * System.out.println(f.getType()+"\t是int"); f.set(obj,12) ; //给属性设值
             * }else{ System.out.println(f.getType()+"\t"); }
             */

        }
        System.out.println("单个对象的所有键值==反射==" + map.toString());
        return map;
    }

    /**
     * 单个对象的某个键的值
     * 
     * @param object
     *            对象
     * 
     * @param key
     *            键
     * 
     * @return Object 键在对象中所对应得值 没有查到时返回空字符串
     */
    public static Object getValueByKey(Object obj, String key) {
        // 得到类对象
        Class userCla = (Class) obj.getClass();
        /* 得到类中的所有属性集合 */
        Field[] fs = userCla.getDeclaredFields();
        for (int i = 0; i < fs.length; i++) {
            Field f = fs[i];
            f.setAccessible(true); // 设置些属性是可以访问的
            try {
            
                if (f.getName().endsWith(key)) {
                    System.out.println("单个对象的某个键的值==反射==" + f.get(obj));
                    return f.get(obj);
                }
            } catch (IllegalArgumentException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
        }
        // 没有查到时返回空字符串
        return "";
    }

    /**
     * 多个(列表)对象的所有键值
     * 
     * @param object
     * @return List<Map<String,Object>> 列表中所有对象的所有键值 ex:[{pjzyfy=0.00, xh=01,
     *         zzyl=0.00, mc=住院患者压疮发生率, pjypfy=0.00, rs=0, pjzyts=0.00,
     *         czydm=0037, lx=921, zssl=0.00}, {pjzyfy=0.00, xh=02, zzyl=0.00,
     *         mc=新生儿产伤发生率, pjypfy=0.00, rs=0, pjzyts=0.00, czydm=0037, lx=13,
     *         zssl=0.00}, {pjzyfy=0.00, xh=03, zzyl=0.00, mc=阴道分娩产妇产伤发生率,
     *         pjypfy=0.00, rs=0, pjzyts=0.00, czydm=0037, lx=0, zssl=0.00},
     *         {pjzyfy=0.00, xh=04, zzyl=0.75, mc=输血反应发生率, pjypfy=0.00, rs=0,
     *         pjzyts=0.00, czydm=0037, lx=0, zssl=0.00}, {pjzyfy=5186.12,
     *         xh=05, zzyl=0.00, mc=剖宫产率, pjypfy=1611.05, rs=13, pjzyts=7.15,
     *         czydm=0037, lx=13, zssl=0.00}]
     */
    public static List<Map<String, Object>> getKeysAndValues(List<Object> object) {
        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
        for (Object obj : object) {
            Class userCla;
            // 得到类对象
            userCla = (Class) obj.getClass();
            /* 得到类中的所有属性集合 */
            Field[] fs = userCla.getDeclaredFields();
            Map<String, Object> listChild = new HashMap<String, Object>();
            for (int i = 0; i < fs.length; i++) {
                Field f = fs[i];
                f.setAccessible(true); // 设置些属性是可以访问的
                Object val = new Object();
                try {
                    val = f.get(obj);
                    // 得到此属性的值
                    listChild.put(f.getName(), val);// 设置键值
                } catch (IllegalArgumentException e) {
                    e.printStackTrace();
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                }
            }
            list.add(listChild);// 将map加入到list集合中
        }
        System.out.println("多个(列表)对象的所有键值====" + list.toString());
        return list;
    }

    /**
     * 多个(列表)对象的某个键的值
     * 
     * @param object
     * @param key
     * @return List<Object> 键在列表中对应的所有值 ex:key为上面方法中的mc字段 那么返回的数据就是: [住院患者压疮发生率,
     *         新生儿产伤发生率, 阴道分娩产妇产伤发生率, 输血反应发生率, 剖宫产率]
     */
    public static List<Object> getValuesByKey(List<Object> object, String key) {
        List<Object> list = new ArrayList<Object>();
        for (Object obj : object) {
            // 得到类对象
            Class userCla = (Class) obj.getClass();
            /* 得到类中的所有属性集合 */
            Field[] fs = userCla.getDeclaredFields();
            for (int i = 0; i < fs.length; i++) {
                Field f = fs[i];
                f.setAccessible(true); // 设置些属性是可以访问的
                try {
                    if (f.getName().endsWith(key)) {
                        list.add(f.get(obj));
                    }
                } catch (IllegalArgumentException e) {
                    e.printStackTrace();
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                }
            }
        }
        System.out.println("多个(列表)对象的某个键的值列表====" + list.toString());
        return list;
    }
}
Java反射机制:获取类的属性与get方法全教程 Java反射机制是一种强大的功能,它允许程序在运行时检查或修改类的行为。通过反射,我们可以在不知道对象具体类型的情况下,访问其属性、方法和构造函数。这一机制极大地增强了程序的灵活性,使得框架开发和动态代理成为可能。在接下来的章节中,我们将详细探讨反射机制的各个细节,包括如何通过反射获取和操作Java类的属性和方法,以及如何处理特定类型的属性如List集合。我们还将讨论反射在实际开发中的安全性、性能考量,以及如何处理反射操作可能抛出的异常。 阅读详情

相关推荐

MCGSPro动画部件实战:用文本分段实现智能报警提示(附工程文件)

本文详细介绍了在MCGSPro组态软件中,如何利用动画部件的文本分段功能,高效实现触摸屏上的智能报警提示。通过绑定整数变量作为索引,一个部件即可动态切换多种状态信息,解决了传统方法画面臃肿、维护繁琐的痛点。文章提供了从变量定义、部件配置到逻辑联动的完整实战教程,并分享了工程文件复用与性能优化技巧。

weixin_28347369的博客 172

java map取列表值,List<Map<String,Object>>使用Java代码遍历以获取String,Object的值

package utils;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;/*** List>实例* @author zhanghuxin* @Version 1.0, 2015年2月5日 上午9:44:50*/public class ListM...

weixin_39630048的博客 1621

电感损耗 DCR/ACR/磁芯损耗 3 大来源解析:从集肤效应到磁滞回线

本文深入解析电感损耗的三大来源:DCR(直流电阻)、ACR(交流电阻)和磁芯损耗,从集肤效应到磁滞回线的微观机制。通过对比不同材料和设计策略,提供高频开关电源中电感损耗的优化方案,帮助工程师提升系统效率和可靠性。

weixin_34379433的博客 516

判断Object中数据类型(已知类型、未知类型))

一、已知数据类型 接收到的数据类型为Object,如果知道数据的类型可以使用ObjectMapper进行处理,得到里面的参数。 import com.fasterxml.jackson.databind.ObjectMapper; import java.io.IOException; import java.util.HashMap; public class Test02 { public static void main(String[] args) throws IOException {

lydms的博客 1万+

Cadence IC5141保姆级教程:Bandgap电路四大仿真(稳定性/噪声/启动/PSRR)完整流程与调参心得

本文提供Cadence IC5141中Bandgap电路的四大仿真(稳定性仿真、噪声仿真、启动仿真、PSRR仿真)的完整流程与调参心得。从原理图检查到ADE L配置,详细解析各仿真步骤的关键参数设置与优化策略,帮助工程师高效完成电路设计与性能调优。

weixin_30399821的博客 1654

Oracle EBS与SAP数据数据切换至迁移华为MetaERP分析

Oracle EBS到华为MetaERP的数据迁移可采用“表对表复制”思路,因其模块化设计下数据模型标准化、边界清晰。核心业务对象存储在结构明确的主表中,与MetaERP模型兼容度高,便于直接映射。而SAP到MetaERP的迁移则因SAP高度优化的复杂表结构(如簇表/池表)、数据分散冗余、深度依赖配置等特点,无法简单复制,必须采用基于业务对象的迁移方法,通过视图/BAPI提取数据并进行深度转换。两种迁移的本质差异源于源系统的数据模型设计理念不同。

金牌架构师 1379

java-获取Map中list后如何转换为List<Object>

list对象转换

weixin_44743983的博客 1249

Floyd (弗洛伊德)算法简述

Floyd在1962年由Robert Floyd以其当前公认的形式出版。算法作为三个嵌套for循环的现代公式首先由Peter Ingerman在1962年描述。Floyd 算法是解决图论问题的比较经典的算法,是解决给定的加权图中顶点间的最短路径的一种算法,可以正确处理有向图的最短路径问题。

慕羽★的博客 2万+

获取List<Map<String, Object>>的值

获取List<Map<String, Object>>的值: List<Map<String, Object>> list =dao.queryTime(id); for(int j = 0 ; j < list.size() ; j ++){ // 打印"startTime"的值,Object转成String System.out.pri...

牛哞哞杂记 6850

69页完整版智慧港口综合解决方案

智慧港口需求4港机远程操控等自动化改造需求自动化码头AGV无线通信及专用视频系统需求安全生产视频监控类需求港机RCMS及设备管理需求岸边智能理货码头三维全景应用智慧港口解决方案5自动化码头AGV/跨运车/无人集卡无线接入港机远控视觉及冗余无线通信视觉集卡防吊起系统集装箱码头岸边智能理货港机RCMS系统无线接入港机智能化管理(无线高清视频监控、一键报警、远程抄表系统)港口拖轮无线接入岸边溢油监测系统TD-LTE覆盖及业务终端接入港口生产管理系统港口可视化集群调度港口GiNMS综合网络设备智能管理全球作业效率最

zuoan1993的博客 2131

第95节:多模型多卡推理管理

多模型推理:在同一硬件平台上同时部署多个不同或相同的深度学习模型,满足多任务需求。多卡推理:利用多块 GPU 资源,提升推理吞吐量与并发能力。目标:合理分配 GPU 资源,实现高效、低延迟的推理服务。

yumeiguo的博客 218

Java List<Object>取出Object中某个属性转成对应的List<String>,List<int>,和拼接成字符串

转成对应的List: //数据库查全部的Teacher List<Teacher> list = teacherMapper.selectAll(); //转成id列表 List<Integer> collect = list.getList().stream().map(Teacher::getId).collect(Collectors.toList()); 拼接成字符串: //数据库查全部的Teacher List<Teacher> list = teacher

weixin_41746337的博客 2419

XSS漏洞之PDF生成:从XSS到服务端任意文件读取

XSS是最为常见的Web漏洞之一,多年来连续入选OWASP TOP10,相信大家都耳熟能详。 它是一种代码注入类的攻击,是一种客户端侧的攻击,攻击者通过在Web应用中注入恶意JavaScript代码,通过点击URL,最终在受害者浏览器端执行的一种漏洞。主要有反射型XSS、存储型XSS、基于DOM的XSS三类。XSS一些比较常规的危害大概有:重定向浏览器、窃取Cookie、浏览器劫持等。本文章侧重于发现XSS后的进一步利用。 主要介绍在某次实际测试过程中,发现XSS漏洞之后,如何进一步的利用,最终通过XSS达

计算机毕业论文源码,学生个人网页制作html源码。贴近用户做网络推广和互联网优化。 3782

Java中找出List集合中属性名为key属性值为value的对象

前言:在日常开发中,我们需要从一个 List 集合中找出其中某一个对象,下面就介绍如何从 List 集合中找出属性名为 key 属性值为 value 的对象 1、方法 getObjectByKeyAndValue /** * 在一个实体list中,找出属性是key,值为value的实体 * * @param list * @param key * @param value * @param <T> * @return */ private static <T> T g

JACKAL 20万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

反射获取List中的值

参考:添加链接描述 获取List以及List中类的属性值的参考代码: public static List getListFieldValueByObject (Object object , String targetFieldName) throws Exception { List<Object> returnList = new ArrayList<>(); // 获取该对象的Class Class objClass = object.getClas

weixin_38370441的博客 3599

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

 通过反射获取对象某个属性的值

通过反射获取对象某个属性的值 public class DataLinkAspect { private static String[] types = { "java.lang.Integer", "java.lang.Double", "java.lang.Float", "java.lang.Long", "java.lang.Short", "java.lang.Byte...

伫望向北的博客 1677

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

查找list集合中存储的对象的属性值的方法

查找list集合中存储的对象的属性值的方法 package com.lld.list.utils; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; import com.lld.model.TestModel; /** * 查找list集合中,存储的对象的,属性值的方法 ...

weixin_43912805的博客 2673

java 反射处理集合_java 反射获取属性/集合学习

1、获取集合方法2、获取属性3、获取属性的属性值并修改属性值4、Filed主要方法介绍获取集合方法(只是针对android)BAFAppManager.classprivate static Stack activityStack; //我想获取这个activityStack集合public Activity currentActivity() {Activity activity = (Act...

weixin_42524750的博客 1735

java 通过反射获取对象中list属性值

反射的定义、机制等等概念网上有很多,这里就不做过多的赘述了,本文主要介绍通过反射机制获取对象中一个list属性的值,并将值赋值到另一个对象中。 上代码: 1.实体类 package com.study.reflex; import lombok.Data; import lombok.NoArgsConstructor; @Data @NoArgsConstructor public class Women { private Integer id; private String na

qq_41999004的博客 5621

反射获取对象中的list数据

工具类: package com.wm.javayu.utils; import com.wm.javayu.model.Student; import com.wm.javayu.model.Teacher; import org.springframework.util.CollectionUtils; import org.springframework.util.ObjectUtil...

你一个人,就不想到别处看看? ---- 我怕一转身连你也不见了...... 8290

反射获取对象属性含list

前言,在大型项目中很少会直接使用form提交表单到后台直接使用的。由于存在多个系统的相互调用,为了兼容和解耦,通常会使用xml或json传送数据。在xml转到service中的pojo类的时候一般会使用到反射,在转换list属性的时候,不能直接使用类似targetField=sourceField的方式,会改变目标类中引用的地址,导致service中无法引用到pojo类。所以要获取list中的对象...

weixin_39073469的博客 2193

java 通过反射给对象的属性赋值、包含list对象

private static void setSendEmailDto(OrdOrderSendEmailDto dto){ Field[] field = dto.getClass().getDeclaredFields(); try{ for (int i = 0; i < field.length; i++) { String name = field[i].getName(); name = name.sub.

qq_39613976的博客 3723

将Object对象里面的属性和值转化成Map对象,包括嵌套类型

需求 需要将Object对象里面的属性和值转化成Map对象,包括嵌套类型,这里我是往已有的map赋值 工具类 import com.alibaba.fastjson.JSONObject; import org.apache.commons.lang3.StringUtils; import org.springframework.util.Assert; import java.lang.reflect.Field; import java.lang.reflect.ParameterizedType;

weixin_43831204的博客 1765

Java - 找出 List 集合中属性名为 key 属性值为 value 的对象

Java - 找出 List 集合中属性名为 key 属性值为 value 的对象

5302

java通过反射获取list_静态方法通过反射获取list集合

静态方法工具/*** 反射获取对象中的list数据** @param object*/public static List getList(Field field, Object object) {List resultList = new ArrayList<>();if (object != null) {try {Class clzz = field.get(object).g...

weixin_32297123的博客 3505

对List对象集合按照对象多个属性排序

针对Object对象中属性排序,可指定多个属性排序。 注意:若是需要排序的字段是父类中的字段,需要子类重写该字段和get set方法,否则反射时找不到对应字段。 /** * Created by 高明亮 on 2020/4/16. */ public class ListSortUtils { /** * 对list的元素按照多个属性名称排序, * list元素的属性可以是数字(byte、short、int、long、float、double等,

qq_36545800的博客 2422
上一篇: sql语句里面的关于时间的函数
下一篇: Required String parameter ‘id’ is not present异常如何解决
一写代码就开心
博客等级 码龄7年 2万+粉丝 1037原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一写代码就开心

你的打赏将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值