1
是否可以(僅)更改Byte Buddy某些方法的可見性?我有一個私有靜態方法的用戶類,我需要委託一些調用這些方法,但它目前失敗,因爲它們是私人的。所以,我想知道是否可以通過添加一個公共修飾符來轉換上述方法來重新定義用戶類。更改方法的可見性
爲了記錄在案,要求目標Java方法沒有效果setAccessible(true)
方法,如字節巴迪仍然失敗,但以下情況除外:
java.lang.IllegalStateException: class net.bytebuddy.renamed.java.lang.Object$ByteBuddy$VHdvjIkb cannot see private java.lang.String org.mockaccino.MockaccinoTest.lambda$3() throws java.lang.Exception
at net.bytebuddy.implementation.MethodCall$MethodInvoker$ForContextualInvocation.invoke(MethodCall.java:2387)
...
我發現了一些API,這些API可能做的伎倆,但我需要測試方法,這在我的情況下是不需要的。
如:
byteBuddy.redefine(targetClass)
.method(ElementMatchers.named(targetMethod.getName()))
.intercept(???)
.transform(Transformer.ForMethod.withModifiers(Visibility.PUBLIC))
.make()
.load(getClassLoader(), ClassReloadingStrategy.fromInstalledAgent());
我的問題是:是否有一個攔截器,能夠調用正在被重新定義源法的身體的?
或者還有另一種方法使目標方法公開可見嗎?