在Byte Buddy转换之后,如何在不加载或保存类的情况下获取类信息?

时间:2016-06-03 18:32:20

标签: java bytecode byte-buddy

对于现有的私有方法,例如类package private的{​​{1}}默认构造函数,我使用下面的代码来设置要保护的方法。

通过测试下面的代码和Byte Buddy的测试用例ContentItem,我发现如果我加载AbstractDynamicTypeBuilderForInliningTest.java::testMethodTransformationExistingMethod()或将其保存到文件中,加载类的默认构造函数和已保存的类就做了变为dynamicType,但protected中的构造函数仍保留原始修饰符,ig 0(包私有)。

所以问题是,如何在不加载或保存的情况下获取转换后的类信息?我需要使用转换后的类信息将默认构造函数添加到类dynamicType.getTypeDescription().getDeclaredMethods()的子类中(子类'默认构造函数需要调用ContentItem的默认构造函数)。 / p>

ContentItem

1 个答案:

答案 0 :(得分:0)

由于性能原因,提供的类型描述不包括超类或转换方法的任何重写方法。

如果要读取完全转换的类型,则需要重新解析字节数组。只需将字节数组提供给解释字节的类型池。