【问题标题】:Java dynamic method creationJava动态方法创建
【发布时间】:2019-11-18 08:55:00
【问题描述】:

我有以下 JSON 格式的信息。

 [
  {
    "name": "A",
    "value": {
      "isValueApplicable": "true"
    }
  },
  {
    "name": "B",
    "parameters": [
      {
        "name": "x",
        "isMandatory": "true"
      },
      {
        "name": "y",
        "isMandatory": "true"
      }
    ]
  },
  {
    "name": "C",
    "parameters": [
      {
        "name": "x",
        "isMandatory": "true"
      },
      {
        "name": "y",
        "isMandatory": "false"
      }
    ]
  }
]

我想要的是,使用以下方法创建一个类:

public Structure getA (String value) {
}

public Structure getB (String xValue, String yValue) {
}

public Structure getC (String xValue) {
}

public Structure getC (String xValue, String yValue) {
}

这里的重要部分是,这些方法应该根据 JSON 中给出的信息动态创建。因此,对于 A 只有值适用。对于 B,需要值 x 和 y。但是对于 C,只有 x 值是强制性的,用户可以为 y 提供值,因此有两种不同的方法。

问。 java是否可以在读取JSON后在编译时生成方法,例如如果参数是强制性的,我将使用这些参数创建方法。如果该值不适用,那么我将创建不带任何参数的方法。

【问题讨论】:

  • 似乎您的 json 不是正确的 json。请提供好的json。
  • 是的,有可能。

标签: java groovy metaprogramming cglib


【解决方案1】:

是的,可以使用Reflection in Java 或者您可以使用javaassitcglib

【讨论】:

  • Reflection 询问类及其成员,您可以更改字段但不能创建新字段。但 suhashd 也想更改方法参数。这就是我写反射的原因。
【解决方案2】:

是的,您可以即时生成 Java 字节码。 CGLib (Github link here) 是一种选择。

或者您可以使用 Jackson 之类的东西从 Json 生成 Java 源代码,然后编译它。 Here's one example.

我相信还有更多方法,但是是的,这当然是可能的。

当然,您显示的 Json 已损坏,因此只会产生解析器错误。

【讨论】:

    猜你喜欢
    • 2011-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-07
    • 2013-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多