我正在查看FileInputStream的源代码,我看到了许多本机方法签名,但是在源代码内的任何地方都找不到“ System.Load”。所以我的问题是那些本机方法如何在不加载本机库的情况下工作?我很努力,但找不到正确的答案
答案 0 :(得分:-1)
根据Java Virtual Machine Specs 1.12,兼容的虚拟机必须
为Java SE Platform的类库的实现提供足够的支持。
编辑:
在规范中,没有任何内容说明必须在单独的库中完成实现。允许JVM不要将本机实现放在单独的库中,而应将其作为JVM代码本身的一部分。在那种情况下,代码应该加载哪个库?
我认为这里的假设是JVM负责在方法执行之前正确加载该方法,该库可以调用它而不必关心加载库等。
相反,自定义定义方法的本地实现由开发人员负责,因此他/她必须在调用该方法之前加载本地库。