我正在使用基于JVM的编程语言,并且将Byte Buddy用于代码生成器。该语言有点类似于Java,但是通常使用注释,而Java使用关键字。一些示例注解是public,private,extends,override,singleton或inject。
与Java 语言规范不同,Java 虚拟机规范对类名几乎没有施加任何限制,并且从JVM角度来看,类似extends或public完全有效的名称。但是,当我尝试使用名称恰好是Java关键字生成注释类时,从Byte Buddy的类中获得了IllegalStateException“ Illegal type name” InstrumentedType。
我该如何规避特定于Java语言的验证,而改用遵循Java虚拟机规范的更宽松的验证规则?
通过以下破解,能够删除Java关键字的验证:
val Field KEYWORDS = Default.getDeclaredField("KEYWORDS") KEYWORDS.setAccessible(true) val Set keywords = KEYWORDS.get(null) as Set keywords.clear (代码是用Xtend语法编写的)
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。