java中运行时的方法声明
我尝试在运行时为类声明一个java方法。我不应该在编译时编写这个方法,也不应该硬编码它。我认为有一些方法可以使用反射,但我不知道如何使用。这怎么会发生 这一切都来自: 我会读输入像java中运行时的方法声明,java,methods,runtime,declaration,Java,Methods,Runtime,Declaration,我尝试在运行时为类声明一个java方法。我不应该在编译时编写这个方法,也不应该硬编码它。我认为有一些方法可以使用反射,但我不知道如何使用。这怎么会发生 这一切都来自: 我会读输入像 name=john,age=21 name=smith,age=23 然后我必须使用“getname”和“getage”方法访问它们的所有“name”和“age”值 但是,姓名和年龄词可以更改为,即姓氏和长度;然后,我必须使用“getname”和“getlength”方法访问他们的姓氏和长度 我知道我将使用invo
name=john,age=21
name=smith,age=23
然后我必须使用“getname”和“getage”方法访问它们的所有“name”和“age”值
但是,姓名和年龄词可以更改为,即姓氏和长度;然后,我必须使用“getname”和“getlength”方法访问他们的姓氏和长度
我知道我将使用invoke调用getXXX方法。但我如何在运行时声明它们呢?
这就是实际问题。您可以使用ASM之类的字节码生成库、BeanShell之类的代码snipplet库,或者使用编译器API在运行时编译类
然而,我也怀疑你不需要这样做,有一个更简单的方法。也许您可以说您希望这个方法做什么?并不是要向类添加新方法。Peter提到的一些高级工具可以帮助您实现这一点 我假设您可能能够使用脚本语言解释器,该解释器可以是用Java编写的,也可以是与Java接口的(例如)。如果你想将它与Rhino集成,你可能必须用Javascript编写这个方法,但你仍然可以从中访问你可能需要的任何Java对象。你能告诉我们为什么要这样做吗?@James.Xu我编辑了我的问题来说明原因。为什么你必须调用
getXXX
?为什么不将这些值存储在HashMap中并调用getMyValue(“name”)
?除非你给出了问题的一个过于简化的版本,否则这就是用大炮射击苍蝇。所以方法集包括:{getname,getname,getlength,getage},还有吗?方法集是无限的吗?看来你是想用枪来射一只狗mosquito@AlockLeo .... 为什么?做一些非常复杂的事情需要一个非常好的理由。在运行时调用编译器来做像这样简单的事情听起来并不正确。