如何从 Java 中的 String 获取类引用?

2024-05-11

如果我需要返回一个基于字符串实例化的类(例如,从 JSON 创建逻辑),应该如何编写?

我最初的想法是一个 switch,但在 Android 框架的 Java 版本中,看起来 switch 语句不允许使用字符串。

接下来的想法是 HashMap:

private HashMap<String, Class> classMap = new HashMap<String, Class>();
classMap.put("someClass", SomeClass.class)?
// ... etc
String someString = jsonObject.getString("someProperty");
Class classRef = classMap.get(someString);
SomeSuperClass classInstance = new classRef();

这是行不通的。我宁愿不if/else列出一长串可能性。


只需使用Class<?> clazz = Class.forName("com.yourpackage.YourClass")然后实例化它:clazz.newInstance();

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

如何从 Java 中的 String 获取类引用? 的相关文章

随机推荐

  • 在 Amazon EMR 上使用 java 中的 hbase 时遇到问题

    因此 我尝试使用作为 MapReduce 步骤启动的自定义 jar 来查询 Amazon ec2 上的 hbase 集群 我的 jar 在地图函数内 我这样调用 Hbase public void map Text key BytesWri
  • 省略号列表[...]并将列表连接到自身[重复]

    这个问题在这里已经有答案了 EDIT 我在最初的例子中很粗心 当我添加列表时不会发生该行为A本身 而是当我添加一个列表时含有 list A to A本身 请参阅下面更正的示例 我试图理解省略号如何列出 那些显示为 当你有一个列表引用本身时发
  • Java-忽略字符串中的分隔符

    我有一个使用管道符号 作为分隔符的字符串 但是 字符串数据也contains管道符号 有没有办法忽略这个 Example name address age John 123 Wood Road Street London 25 因此 当我这
  • redis - 使用哈希

    我正在使用 redis 为我的 Web 应用程序实现社交流和通知系统 我是 redis 的新手 我对哈希值及其效率有一些疑问 我读过这篇很棒的文章Instagram 帖子 http instagram engineering tumblr
  • 使用 C# 将 DateTime 转换为字符串的魔术字符串

    今天我遇到了一个讨厌的错误 该任务非常简单 我所需要做的就是将 DateTime 对象转换为字符串 yyyymmdd 格式 yyyymmdd 部分在外部软件供应商的开发文档中进行了说明 因此 我方便地从他们的文件中复制了字符串并粘贴到我的代
  • 从 iframe 访问 Session 变量

    我有一个 jsp 我在其中设置了会话变量 但是 当我尝试读取另一个 jsp 中的会话变量 user 时 该变量已加载到 iframe 同一主机 服务器等 中 然后我得到 NullPointerException 如何在 iframe 中获取
  • C# - 挂钩现有 COM 对象

    假设我们有一个现有进程 或应用程序 它从 ocx 文件 例如 MyCOMLibrary ocx 调用 COM 对象 有没有办法编写一个 C 库来精确复制 ocx 文件 这样原始应用程序就可以调用您的 C 代码而不是原始 COM 对象 当然
  • 如何在 Jersey 容器中配置欢迎文件 (HTML/JSP)

    我有一个 Jersey RESTful Web 服务项目 我已经在中配置了 Jersey 容器web xml一切正常 在同一个项目中 我引入了一个 HTML 页面并包含在
  • 显示 Facebook 墙上我网站上的帖子

    我正在建立我的网站 我想做的事情如下 我想在我的网页上展示我最近在 Facebook 墙上发布的帖子 但只是我自己的帖子 不是其他人都只是我的 Here s an example of how I would like to do it 我
  • Solidity 中的地址(0)是什么

    谁能向我解释一下什么address 0 是在 Solidity 中吗 我在文档中找到了以下内容 但对我来说并没有真正意义 如果目标账户是零账户 地址为0的账户 则交易创建一个新合约 如前所述 该合约的地址不是零地址 而是从发送方及其发送的交
  • Python 仪器驱动程序

    我是一名实验物理学家 并且是Python http en wikipedia org wiki Python 28programming language 29 我发现它非常适合数据分析和脚本编写 实际上我还用它来连接实验室仪器 网络分析仪
  • 如何使用应用程序脚本在 Google 电子表格中移动工作表 [重复]

    这个问题在这里已经有答案了 我想使用应用程序脚本在电子表格中移动工作表 怎么做 最好的直播 你看过吗文档 https developers google com apps script reference spreadsheet sprea
  • 使用查询选择器从 VBA 中抓取

    我使用了该网站的代码来提取数据site https bazashifer ru proflist profnastil Option Explicit Public Sub GetInfo Dim sResponse As String i
  • 使用 Mail_Mime 发送附件到 GMail,收到“noname”附件

    我有一个非常简单的网站表单 可以包含附件 它使用 gmail 的 smtp 发送到 gmail 地址 一切工作都很好 除了文件以 noname 形式到达 没有文件名或扩展名 如果您下载附件并使用正确的文件名重命名它 则该文件可以正常打开 我
  • 输入字符串的格式不正确

    下面的代码产生一个错误 指出我的输入字符串的格式不正确 为什么 private void button7 Click object sender EventArgs e string uriAddTagtoGroup string Form
  • 使用 fread 导入数据后所有列均作为字符

    我导入了一个 CSV 文件 包含文本列和数字列 x lt fread myfile csv header TRUE verbose T na strings c null null 但导入后 当我运行summary x 时 所有列都被视为字
  • 如何知道生成的序列最多是一定长度

    我想知道生成的序列是否少于 2 个条目 gt gt gt def sequence for i in xrange secret yield i 我的低效方法是创建一个列表 并测量其长度 gt gt gt secret 5 gt gt gt
  • 使用 PassportJS 和 Connect for NodeJS 对 Facebook 用户进行身份验证

    我正在尝试使用 connect 将 Passport 集成到我的 NodeJS 服务器中 但似乎无法正确执行 所有指南 示例都使用expressJS 因此我尽力重新格式化代码以与我的代码一起使用 但我似乎无法让它工作 相关部分写在下面 有人
  • 如何在chartjs中绘制多个时间序列,其中每个时间序列都有不同的时间

    例如 我有两个时间序列 s1 2017 01 06 18 39 30 100 2017 01 07 18 39 28 101 and s2 2017 01 07 18 00 00 90 2017 01 08 18 00 00 105 我想在
  • 如何从 Java 中的 String 获取类引用?

    如果我需要返回一个基于字符串实例化的类 例如 从 JSON 创建逻辑 应该如何编写 我最初的想法是一个 switch 但在 Android 框架的 Java 版本中 看起来 switch 语句不允许使用字符串 接下来的想法是 HashMap