2 回答

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超6個(gè)贊
您可以簡單地禁用驗(yàn)證:
new ByteBuddy().with(TypeValidation.DISABLED);

TA貢獻(xiàn)1993條經(jīng)驗(yàn) 獲得超6個(gè)贊
在研究了 Byte Buddy 源代碼之后,我可能找到了一個(gè)解決方案,但它非常 hacky,希望有人知道更好的方法......
對(duì)我來說幸運(yùn)的是,KEYWORDS中 的字段net.bytebuddy.dynamic.scaffold.InstrumentedType.Default僅使用普通的可變字段HashSet而不是Collections.unmodifiableSet,因此通過以下 hack,我能夠刪除 Java 關(guān)鍵字的驗(yàn)證:
val Field KEYWORDS = Default.getDeclaredField("KEYWORDS")
KEYWORDS.setAccessible(true)
val Set<String> keywords = KEYWORDS.get(null) as Set<String>
keywords.clear
(代碼是用Xtend語法編寫的,但你明白了)
話雖這么說,我是第一個(gè)承認(rèn)使用 Java Reflection 探索final static其他庫的領(lǐng)域并不完全是最佳實(shí)踐的人。因此,雖然我的直接阻止程序已被刪除,但我希望有一個(gè)更正統(tǒng)的解決方案來解決這個(gè)問題......
添加回答
舉報(bào)