You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过字符串形式的变量名从List<Contact>中获取指定属性值

动态获取Java对象指定属性的实现方法

需求说明

现有基于数据库生成的List<Contact>类型集合contactList,Contact类包含name、phone、email等多个String类型属性。需要实现通过字符串格式的属性名,直接获取集合中指定对象的对应属性值,无需编写十余个if分支逐个匹配属性名。

实现方案

这里采用属性名-取值函数映射表的方式实现,相比反射方案性能更高、逻辑更可控,不需要引入第三方依赖:

  1. 提前初始化一个Map,key为属性名的字符串形式,value为对应属性的取值函数
  2. 需要取值时,直接通过属性名从Map中获取对应的取值函数,传入目标Contact对象即可拿到属性值,后续新增属性仅需要在Map中加一行配置即可,无需修改取值逻辑。

已验证可用的完整代码

import java.util.HashMap;
import java.util.Map;
import java.util.function.Function;

// 定义属性名与取值逻辑的映射表
private Map<String, Function<Contact, String>> attrGetterMap;

// 初始化映射表
attrGetterMap = new HashMap<>();
attrGetterMap.put("Name", c -> c.name);
attrGetterMap.put("Phone", c -> c.phone);
attrGetterMap.put("Email", c -> c.email);  

// 取值示例:second_value为传入的属性名字符串,position为集合中目标对象的下标
String targetValue = attrGetterMap.get(second_value).apply(contactList.get(position));

内容的提问来源于stack exchange,提问作者Askabius

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 17:39:00