gpt4 book ai didi

java - 为什么某些 Java 库方法委托(delegate)给具有几乎相同签名的 native 方法?

转载 作者:IT老高 更新时间:2023-10-28 13:53:46 26 4
gpt4 key购买 nike

在深入研究 JRE 库的源代码后,我注意到一个奇怪的常见代码结构,如下所示:

public int foo(double bar) {
return foo0(bar);
}

private native int foo0(double bar);

此 Code Pattern 的目的是什么,为什么要使用它而不是简单地将底层 native 方法公开为公共(public)方法?

最佳答案

native 版本只是一个实现细节。

这种模式将方法的公共(public)接口(interface)与实际实现分开。

我认为这至少有 5 个有用的原因:

  • 测试目的(可以模拟java方法调用)
  • 替代实现:特定版本的 java 库可以以纯 java 形式实现该方法,而无需调用 native 实现(在 swing 代码中很常见)。
  • 向后兼容性:如果在新版本中,该方法接受一些额外的参数,则可以保留原始 java 方法签名并适应原生实现。
  • 输入/输出验证:大多数时候,在调用原生版本之前,java 代码会对输入参数进行一些检查,并在需要时抛出异常。
  • 隔离:直接使用原生代码的方法数量有限,允许内部代码结构有更多的变化。

您可能会发现更多优势。

关于java - 为什么某些 Java 库方法委托(delegate)给具有几乎相同签名的 native 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38948090/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com