【问题标题】:Dynamic Java Variable Naming动态 Java 变量命名
【发布时间】:2011-08-18 15:28:40
【问题描述】:

这个问题比什么都更能增进我的知识......

Java 是否有类似于 PHP 生成变量名的能力?我有一个 SCJA 证书,我正在为 SCJP 学习,从未见过这个,但很好奇。

PHP 示例

$application->{$request->getParameter("methodCall")}($request->getParameter('value'));

Java 有类似的东西吗?我一直在这里阅读,一般的答案是使用我不感兴趣的 HashMap,因为这不是为了解决真正的问题。我对这可能的解决方案更感兴趣吗?如果不是这样,只是想扩展我的知识!

谢谢, 贾里德

【问题讨论】:

标签: java variables dynamic


【解决方案1】:

不,变量(字段和局部变量)是在 Java 的编译时静态“创建”的。

当然内存只在运行时被占用,但是一个对象有多少和哪些字段是在编译时决定的。

因此,您不能在 Java 中“动态添加字段”。

是的:Map 解决问题的方法。 “添加字段”通常不是问题,而是尝试的解决方案,它适用于某些语言(通常是动态语言)而不适用于其他语言。

【讨论】:

  • +1 特别表示添加字段不是问题,但可能是一种解决方案
  • 非常感谢!我对 HashMaps 很熟悉,我只是好奇这是否可行。
  • 正如@Peter 评论的那样可能有一些繁重的工作(如果没有第三方库,这并不合理),但增加了严重限制,这使得它在大多数情况下都是矫枉过正的。
【解决方案2】:

我认为您的意思是类中的一个字段。局部变量只能在方法中使用。

要在类或变量中生成字段,您需要生成 Java 代码并在运行时编译它或字节码。它可以完成,但比使用简单的 Map 复杂 100 倍。 (我之前已经动态完成过,除非您真的必须这样做,否则我不会推荐它)

如果你想做代码生成,我建议使用Objectweb's ASM

【讨论】:

    【解决方案3】:

    这是做不到的...Java Reflection 只允许你查看一个类的结构,但不能追加到它上面。

    【讨论】:

      猜你喜欢
      • 2010-10-20
      • 1970-01-01
      • 2013-03-25
      • 1970-01-01
      • 2018-05-06
      • 2014-01-18
      • 2012-05-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多