Java动态方法创建

时间:2019-11-18 08:55:00

标签: java groovy metaprogramming cglib

我有以下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之后在编译时生成方法,就像参数是强制性的一样,我将使用许多参数创建方法。如果该值不适用,那么我将创建不带任何参数的方法。

2 个答案:

答案 0 :(得分:0)

是的,可以使用Reflection in Java完成,也可以使用javaassitcglib

答案 1 :(得分:0)

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

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

我肯定还有更多方法,但是是的,肯定有可能。

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

相关问题