在btrace中,如何比较和检查Enum对象的值?

时间:2017-01-17 04:13:15

标签: java jvm tracing btrace

我在btrace中正确设置了回调。我的参数列表包含一个自定义的Enum对象。如果Enum对象等于特定值,我想打印一些东西。我可以直接比较Enum对象,或者将该Enum对象的字符串表示与常量字符串进行比较。

但是,str()函数不会返回此Enum对象的字符串表示形式。它返回路径$ class @hash。

如何在btrace中比较Enum对象?

谢谢! 厄尔本

1 个答案:

答案 0 :(得分:0)

找到答案。枚举的字符串表示存储在" name"此枚举对象的字段。因此,使用反射来获得该值的名称" name"像这样的对象字段:

private static Field enumNameField = field("java.lang.Enum", "name");
String stringRepresentation = (String) get(enumNameField, enumObject);