如何使用Byte Buddy从类的每个字段中获取值?

时间:2019-02-19 16:52:24

标签: byte-buddy javaagents

我正在编写一个使用Java代理和Byte Buddy来执行运行时代码生成的库。我需要创建一个表达式来从类的每个字段中获取值。

如何创建表达式以访问字段值?目前,我正在探索FieldDescription API,但没有找到任何相关方法。

1 个答案:

答案 0 :(得分:0)

在GitHub上提供的其他信息中,这是您的处理方式:

要创建StringBuilder,请致电MethodCall.construct(StringBuilder.class.getConstructor())

然后,您可以像这样MethodCall.invoke(StringBuilder.class.getMethod("append", Object.class)).onMethodCall(...).withField(...)调用字符串构建器的追加,在此,您从初始的字符串构建器开始,然后针对每个字段或常量重复一次,将最后一个输入提供给下一个实例。

如果类型是基本类型,则必须根据字段类型调整方法,以使其起作用。最后,您必须在toString上进行最终方法调用。