评论者:gshayban
从Android出发
{quote}
Android不运行Java字节码,它运行Dex字节码。你的类转换成的dexdump输出很有趣。
也不太关心中间虚拟机规范(JVM规范)。Android不是一个Java虚拟机。我们遵循JLS(Java语言规范),但不遵循JVM规范(我们怎么能呢,因为我们不运行Java字节码)。因此,所有针对它的上诉都是无关紧要的。我们尝试在Dex字节码方面与JVM规范的精神保持兼容,但如果你的源代码不是Java,没有任何保证。
现在,验证器(可能仍然是)不正确,甚至不符合我们的(相当糟糕)规范,而且遗憾的是,我们并不非常一致。例如,在Marshmallow中,许多我们无法正确验证与结构化锁定相关的代码被拒绝为VerifyError,这与JVM规范的精神不符。在下一个版本中,这将得到缓解,并将推迟到代码运行时进行实际检查。
遗憾的是,我们无法对旧版本作出任何回应,你必须千方百计解决任何问题。-(- 我会设法在你找到时间时看看你的类。
{quote}
听起来在Clojure中制作一种折衷方案是最坏的情况中最好的。