java中通过反射设置对象字段的值

2024-01-02

首先,我有一个这样的对象:

public class Entity {
    public int data1;
    public String data2;
    public float data3;
    public SubEntity data4;
}

public class SubEntity{
    public int id;
    public SubEntity(int id){
      tis.id = id;
    }
}

还有一个 HashMap:

  HashMap<String, Object> map = new HashMap<String, Object>();
  map.put("data1", 1);
  map.put("data2", "name");
  map.put("data3", 1.7);
  map.put("data4", new SubEntity(11));

我需要正确的方法通过使用哈希映射的反射来为实体动态的所有字段设置值。像这样的事情:

    for (Field f : entity.getClass().getDeclaredFields()) {
       String name = f.getName();
       Object obj = map.get("name");
       // Need set value field base on its name and type. 

} 

我怎样才能做到这一点?假设我在实体中有许多子类。


如果你想走反射路线,那么为什么不使用字段.set(对象, 对象) http://docs.oracle.com/javase/7/docs/api/java/lang/reflect/Field.html#set%28java.lang.Object,%20java.lang.Object%29及其更类型安全的兄弟姐妹(参见文档)

f.set(myEntity, obj);

笔记。您可能需要使该领域易于访问 http://docs.oracle.com/javase/7/docs/api/java/lang/reflect/AccessibleObject.html#setAccessible%28boolean%29如果它是私有/受保护的,则首先。

但是,如果可以的话,我也许会委托给该对象,并且它可以通过地图填充自身,例如

myEntity.populateFromMap(myMap);

并在班上完成艰苦的工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java中通过反射设置对象字段的值 的相关文章

  • 如何注入“运行时”依赖项,例如登录用户,该依赖项在应用程序启动时不可用?

    我只是不明白这个 我在我的 java GWT 应用程序中使用 Gin 来进行 DI 登录屏幕集成到完整的应用程序窗口中 用户登录后 我想将用户对象注入到我创建的其他类 例如 GUI Presenters 中 因此我相信存在某种运行时依赖性
  • 在 libgdx 中批处理多维数据集时出现问题

    我正在尝试开发一款游戏 在屏幕上渲染多达 300 个立方体 为每个多维数据集创建新的 modelInstance 时 modelBatch 的性能非常糟糕 据我所知 没有 3d 批处理可以将所有立方体批处理到一次绘制调用 所以我拼命地尝试以
  • SharePoint 2010 Web 服务上的 Java JBoss 401 错误

    我的代码在 Eclipse IDE 中测试时运行成功 我正在使用生成的 Copy wsdl 通过 Web 服务连接到 MS SharePoint 2010 当我在 JBoss 服务器上部署代码 运行 Adob e LifeCycle 时 我
  • android新手需要了解“?android:attr/actionBarSize”

    我正在经历拉尔斯 沃格尔的教程 http www vogella com articles AndroidFragments article html在使用 Fragments 时 我遇到了以下代码 android layout margi
  • Spring MVC 和 Struts MVC 之间的区别 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 Spring MVC 和 Struts MVC 之间的主要区别是什么 Spring MVC 和 Struts 之间的主要区别是 Spr
  • 控制启动时的竞争条件

    我有一些代码想要执行一些一次性初始化 但这段代码没有明确的生命周期 因此在初始化完成之前 我的逻辑可能会被多个线程调用 所以 我想基本上确保我的逻辑代码 等待 直到初始化完成 这是我的第一次剪辑 public class MyClass p
  • 无法从 PDFA1-a 格式文档中提取图像

    我正在使用以下代码从 PDFA1 a 格式的 pdf 中提取图像 但我无法获取图像 List
  • 为什么在大多数开源java项目中局部变量没有被声明为final?

    如果我查看 OpenJDK Hibernate 或 Apache 中的 java 源代码 我还没有看到任何声明为 Final 的局部变量 这表明一些最广泛使用的 java 软件库的开发人员 不要相信final关键字可以提高可读性 不相信它会
  • 在字节数组上进行右位旋转/循环移位的最快方法是什么

    如果我有数组 01101111 11110000 00001111 111 240 15 移位 1 位的结果是 10110111 11111000 00000111 183 248 7 数组大小不固定 移位范围为 1 到 7 含 目前我有以
  • BODMAS系统的加法和减法

    我一直在构建一个简单的公式计算器 但一直被加法和减法困扰 正如您应该知道的 在计算方程时 您遵循优先级算术规则 即括号 顺序 幂函数 除法 乘法 加法和减法 问题是加法和减法具有相同的优先级 因此您可以从左到右阅读 到目前为止 这是我的代码
  • GSSAPI 中的 javax.naming.AuthenticationException

    我正在尝试使用 JAVA GSSAPI 执行 NTLM 绑定 我收到此错误 javax naming AuthenticationException GSSAPI 根异常是 javax security sasl SaslException
  • 使用反射创建 Action<'T> 的实例

    我将如何创建一个实例Action lt T gt 使用反射 这是我所拥有的 let makeAction typ Type f T gt unit let actionType typedefof
  • 尝试用Java实现基于文本的Hangman游戏

    我需要检查用户输入的字母以及他们猜测的空格是否位于隐藏单词的特定位置 变量one等于用户猜测的空间索引 而letterGuess是他们猜测的字母 我的代码怎么错了 示例 秘密词是你好 hidden word is 用户猜测h 0 1 2 3
  • 在服务器上创建 Zip 文件并使用 java 下载该 zip

    我从 mkyong 获得了以下代码 用于在本地压缩文件 但是 我的要求是在服务器上压缩文件并需要下载它 任何人都可以帮忙吗 代码写入zip文件 public void zipFiles File contentFile File navFi
  • 如何在 Android 应用程序退出之前进行一些清理?

    当我的 Android 应用程序终止时 是否有某种 onTerminate 方法可以进行一些清理 我想清除一些 SharedPreferences 我有一个活动 它保持几个数字的运行平均值 并将其存储在 SharedPreference 中
  • Java Media API:java media api 下载

    我在哪里可以找到javax media jar 文件 在sun站点它下载一个安装程序 有没有可用的java媒体jar 没有 javax media 具体是 jar 文件 该包位于 jmf jar 文件中 您需要运行安装程序并取出 jar 或
  • 在android中测量不规则多边形的面积

    我正在开发一个应用程序 在其中我在地图上绘制多边形 并且我使用的地图不是谷歌 它的Mapsforge开源离线地图库 我可以通过将地理点转换为像素点来轻松在地图上绘制多边形 但在这里我想发现是不规则的多边形 为此我做了很多尝试 但它让我失败了
  • 请解释为什么Java和C对此代码给出不同的答案

    public class Test public static void main String args int i 10 i i System out println value of i is i 输出是 10 当我在中执行类似的代码
  • Cassandra 会话与集群 有什么可分享的?

    考虑 Cassandra 的 Session 和 Cluster 类 Java 驱动程序 我想知道有什么区别 在 Hibernate 中 每次都会创建一个会话并共享会话工厂 从许多来源我了解到 它被认为是创建一个会话并在多个线程之间共享它
  • Java编程编译jar

    我有一个文本文件中的java源代码 必须在源代码中输入一些自定义的硬编码变量 然后将其转换为 jar 这是可行的 但是当我运行 jar 时 找不到 Main 类 当我用 WinRAR 解压 jar 文件时 我似乎找不到错误 当我通过 cmd

随机推荐

  • 无法将密钥发送到定向 Paypal 登录页面

    我正在为 Paypal Checkout 编写一个自动填充机器人 paypal 登录页面是从另一个网站重定向的 因此与官方 paypal 登录页面略有不同 尽管 HTML 类似 我尝试过不同的方法 比如switch to frame scr
  • 运行 Spring MVC 测试时出现 NoSuchMethod 错误

    我正在尝试按照 Spring in Action 第四版 第 5 章中的示例来创建我自己的项目 仍然是企业级的新手 我正在使用 Windows 7 PC Java 7 Spring 4 和 Maven 当我运行 ClinicalNoteCo
  • Hbase快速统计行数

    现在我实现了行计数ResultScanner像这样 for Result rs scanner next rs null rs scanner next number 如果数据达到百万次计算量很大 我想实时计算我不想使用Mapreduce
  • Spring框架4.3.0 - 我什么时候需要@Autowired?

    我刚刚开始学习 Spring 框架 我使用版本 4 3 0 我认为我们需要 Autowired 来告诉框架何时一个类需要注入 不过 我今天尝试这样做 Component public class CDPlayer implements Me
  • 如何在 C++ 中创建动态数组的数组

    我正在尝试学习 C 并尝试为简单的哈希表编写代码 如下结构 array 0 0 array 0 1 array 0 2 key 1 value 1 value 2 array 1 0 array 1 1 key 2 value 3 arra
  • SQLAlchemy 关系加载器在表上留下锁?

    我有非常简单的代码导致我的 MySQL 数据库挂起 import sqlalchemy as sa from sqlalchemy import orm creating the engine the base etc import uti
  • 如何在 Jetty 中部署 Servlet?

    我创建了一个简单的 Servlet 我想将其部署在 Jetty 7 2 中 Jetty 正在运行并且能够为 JSP 页面提供服务http localhost 8080 jonas test jsp 我用 Jetty 启动java jar s
  • React 18 TypeScript 儿童 FC

    我升级到 React 18 并且编译得很好 如今 似乎每个使用子组件的组件都会抛出错误 Property children does not exist on type IPageProps 在儿童道具自动包含在之前FC界面 现在看来我必须
  • 将 IN 子句与 PIG FILTER 结合使用

    PIG 支持 IN 子句吗 filtered FILTER bba BY reason not in a b c d 或者我应该把它分成多个 OR Thanks 您可以使用 Apache DataFu 中的以下 udf 代替 这将帮助您避免
  • 如何在 JPA 2.0 项目中加载 Hibernate 'xxx.hbm.cfg' 文件?

    我刚刚启动了一个 Spring Roo 应用程序 使用 Hibernate 作为 JPA2 0 提供程序 我使用罐 子的方式如下 hibernate core 3 6 4 Final jar hibernate commons annota
  • 使用 C# 中的架构进行 XML 解析

    我正在编写一些在运行时加载 xml 文件的代码 目前 我们使用 XmlDocument 类型来读取 xml 文件 并在 SelectSingleNode 语句周围包装一个 try catch 这是在节点为 null 或在我们解析用户时不存在
  • iOS 从后台重新检查加载位置

    我正在构建一个应用程序 它根据您当前的位置显示结果数据 目前 我正在使用viewDidLoad的方法UIViewController开始CLLocationManager并获取当前位置 一旦我获得了与我想要的准确性相匹配的位置 我就会向我的
  • 从发布的 JSON 获取经典 ASP 变量

    我正在尝试通过 AJAX 将 JSON 发布到经典 ASP 页面 该页面检索值 检查数据库并将 JSON 返回到原始页面 我可以通过 AJAX 发布 JSON 我可以从 ASP 返回 JSON 我无法将发布的 JSON 检索到 ASP 变量
  • 在 Golang 中导入 C 错误:cc1.exe:错误:给出的文件名太多

    我正在尝试导入并使用 C 包 但我不断收到此错误 runtime cgo cc1 exe error too many filenames given Type cc1 exe help for usage cc1 exe fatal er
  • 将域指向我的远程 Node JS 应用程序?

    我正在尝试弄清楚如何在我的 Ubuntu 10 04 LTS 服务器上准确部署 Node JS 我读过许多不同的博客和文章 它们解释了多种不同的方式 大多数似乎已经过时了 或者看起来并没有真正发挥作用 看来最简单的解决办法就是使用Forev
  • 部分类文件的命名约定

    我正在生成大部分 ASP NET MVC 脚手架代码 所有生成的文件都是使用标准命名约定的部分类 例如 我的员工控制器文件名为 EmployeeController cs 如果我希望使用自定义的非生成逻辑扩展 EmployeeControl
  • Visual Studio 2019:起始页而不是起始窗口

    Visual Studio引入了阻塞Start Window而不是非阻塞Start Page 考虑到Visual Studio的可扩展性如何 有没有办法让VS2019显示非阻塞Start Page The new Start Window非
  • switch 语句:“期望一个常量值”

    目前我正在与 神奇的字符串 问题作斗争 public class MyDataField class definition exuecuted method public void SwitchMultipleDataFields var
  • 如何将三个sql选择组合成一个查询

    我有下面的三个查询 我想将它们合并为一个查询 这样我就可以得到三列 其中包含按县划分的结果 我尝试对所有表进行内部联接 但得到的数据很差 如何组合这三个查询并按县分组 select Total DLL Children SUM cd Num
  • java中通过反射设置对象字段的值

    首先 我有一个这样的对象 public class Entity public int data1 public String data2 public float data3 public SubEntity data4 public c