【问题标题】:Java native methods [closed]Java本机方法[关闭]
【发布时间】:2013-07-05 14:17:04
【问题描述】:

我在 Java 中找不到本地方法 memchr、memcmp、memcpy、memmove、memset 的相关代码。有人可以解释这些方法代表什么吗?他们真正做什么?

我想获得程序中变量指向的值,我想知道这些方法是否可以帮助我。

提前谢谢你。

【问题讨论】:

  • 抱歉,您的问题没有意义,或者我无法理解您的问题。 “我要访问变量指向的值” > 这些函数不需要访问变量指向的值。变量名是它所持有的值的别名。
  • 其实我不是想获取变量本身的内容,而是它所指向的值。
  • 为什么Java中有指针?这看起来是一个糟糕的设计。 Java 没有指针概念,因此,您不能按照您的要求进行操作。您实际面临的根本问题是什么?
  • 我正在研究 JavaCV。我想使用 CamShift 算法跟踪对象。并且在一个论坛上有人告诉我们在网上找到的示例代码中,有一行代码有错误,我们必须将变量替换为变量指向的值。我是 Java 和 JavaCV 的新手。这就是为什么我可能会问一些愚蠢的问题。对不起:(

标签: java pointers methods native


【解决方案1】:

不鼓励使用 Java 本地方法,除非您无法使用可用的 Java 方法完成任务。本机方法的实现也可能与 java 版本不同。如果你真的想看到它们,你只需从openJDK 下载带有源代码的 jdk 并查看它们。另一方面,您也可以为这些本机方法拥有自己的实现。看看here 获取有关如何覆盖这些本地方法的更多详细信息

【讨论】:

  • 你能告诉他们代表什么,以防有人想使用它们吗?谢谢你:)
  • @javacv_newbie 抱歉,我没有 openjdk 下载 jdk7。请参阅 stackoverflow.com/questions/12594046/…,您可以访问并查看它们是什么。这些方法正在更改版本。因此不能保证它们在特定版本中是什么。查看 JNI 以找到可以覆盖的方法
  • 啊,好吧,我明白了。谢谢;)
【解决方案2】:

没有。因此,您关于他们所做的事情的问题没有意义。 Java 中最接近的方法是 System.arraycopy()。

【讨论】:

  • -1 我也这么认为,但在研究中我发现 Java Native 方法确实存在并且确实提供了所描述的功能。尽管不可否认,对于任何正常情况来说,这似乎都是一个非常糟糕的主意。
  • @EJP : System.arraycopy() 究竟做了什么?
  • @Elemental 你能想到任何种看起来不错的情况吗?
  • @javacv_newbie:Java docs 中的描述比任何人都可以在此处提供的任何内容都更加详尽。请务必检查manual
  • 恐怕这不是我要找的。还是谢谢你:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-22
  • 2017-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多