代码之家  ›  专栏  ›  技术社区  ›  NullVoxPopuli

Java/Ruby:有没有办法在Java中执行.constantize或Object.send()呢?

  •  1
  • NullVoxPopuli  · 技术社区  · 15 年前

    在鲁比,你可以 "var1".constantize var1 . Ruby还有Model.Send(“方法名、参数可以在这里等”),它与实际调用该方法是一样的。

    3 回复  |  直到 15 年前
        1
  •  2
  •   Rob Di Marco    10 年前

    你考虑过用 JRuby ?

    关于你的问题:

    1. constantize不允许使用类似eval的语法,在这里您可以传入字符串并将其转换为Java中的代码。你可以像Class.forName这样从字符串加载一个特定的类,但听起来并不是你想要的。
    2. 您可以使用Java反射API在类签出时动态调用方法 Jakarta Commons BeanUtils
        2
  •  2
  •   vstoyanov    15 年前

    在Java中,类似的行为是通过反射API实现的。但是,由于Java是一种编译语言,所以在编译时会删除局部变量(在方法、构造函数、参数等内)信息。 但是,您仍然可以完全访问类名、层次结构、方法和字段(类变量)。
    一个好的起点是 Reflection API tutorial 或者对象的getClass()方法。

        3
  •  0
  •   Peter Lawrey    15 年前

    你能更详细地解释一下你想做什么吗,我怀疑你想做什么可以用Java的不同方式来完成。