我正在尝试对 com.microsoft.azure.eventprocessorhost.PartitionContext 进行并发测试,它在签名的 jar 中具有多参数包保护的构造函数。
我想基本上忽略该构造函数(或传递空值)并重写一个方法来增加计数器。该类不是最终的,构造函数或相关方法也不是最终的。
由于签名而直接导致安全异常的子类化。我查看了各种示例,并使用了 ByteBuddyTutorialExamplesTest 的本地版本,但没有效果。
目前,我正在考虑放弃并拦截该类的调用站点。也就是说,拥有目标 (PartitionContext) 的假版本会很方便。
我是否错过了任何技巧,或者我想要完成的事情是不可能的?
最佳答案
Byte Buddy 提供了一个 ClassLoadingStrategy
,它将类注入(inject)到类加载器中,并且可以使用给定的 ProtectionDomain
。但是,确实需要明确提供域。
要应用此策略,请使用第二个参数重载 load
方法:
builder.make().load(sealedClass.getClassLoader(),
ClassLoadingStrategy.Default.INJECTION.with(sealedClass.getProtectionDomain()))
关于byte-buddy - 拦截签名类的策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42184038/