第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

禁用 Byte Buddy 中的標(biāo)識(shí)符驗(yàn)證

禁用 Byte Buddy 中的標(biāo)識(shí)符驗(yàn)證

炎炎設(shè)計(jì) 2023-10-19 18:21:49
我正在研究基于 JVM 的編程語言,并使用 Byte Buddy 作為代碼生成器。該語言有點(diǎn)類似于 Java,但通常使用注釋,而 Java 使用關(guān)鍵字。一些示例注釋是public、private、extends、override或singleton。inject與 Java語言規(guī)范不同,Java虛擬機(jī)規(guī)范對(duì)類名施加的限制非常少,從 JVM 角度來看,類似extends或 之類的名稱是完全有效的。public然而,當(dāng)我嘗試生成名稱恰好是 Java 關(guān)鍵字的注釋類時(shí),我從 Byte Buddy 的類中得到一個(gè)IllegalStateException“ ”。Illegal type nameInstrumentedType如何繞過 Java 語言特有的驗(yàn)證并使用遵循 Java 虛擬機(jī)規(guī)范的更寬松的驗(yàn)證規(guī)則?
查看完整描述

2 回答

?
慕尼黑的夜晚無繁華

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超6個(gè)贊

您可以簡單地禁用驗(yàn)證:

new ByteBuddy().with(TypeValidation.DISABLED);


查看完整回答
反對(duì) 回復(fù) 2023-10-19
?
ibeautiful

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è)問題......


查看完整回答
反對(duì) 回復(fù) 2023-10-19
  • 2 回答
  • 0 關(guān)注
  • 152 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)