Jack Asked:2020-11-07 10:52:50 +0000 UTC2020-11-07 10:52:50 +0000 UTC 2020-11-07 10:52:50 +0000 UTC 为什么 Object 类中的某些方法带有 native 修饰符? 772 为什么Java需要修饰符,为什么native类中的Object某些方法用它标记? java 1 个回答 Voted Best Answer Suvitruf - Andrei Apanasik 2020-11-07T10:59:31Z2020-11-07T10:59:31Z native表示该方法未在 Java 代码中实现。与 JNI (Java Native Interface) 结合使用。 通常,假设该方法是用c代码实现的。磁盘、网络等 在 C 部分实现,Java 包装器调用这些方法。 现在手头只有Ubuntu。我会给你一个例子。 您有主要的 Java 文件Main.java: public class Main { public native int intMethod(int i); public static void main(String[] args) { System.loadLibrary("Main"); System.out.println(new Main().intMethod(4)); } } 和Main.cc文件: #include <jni.h> #include "Main.h" JNIEXPORT jint JNICALL Java_Main_intMethod (JNIEnv *env, jobject obj, jint i) { return i * 2; } 另一个要构建的Makefile: .PHONY: all clean all: javac Main.java javah -jni Main gcc -shared -fpic -o libMain.so -I$${JAVA_HOME}/include -I$${JAVA_HOME}/include/linux Main.c java -Djava.library.path=. Main clean: rm -f *.class *.so Main.h 让我们把这整个事情进行下去: javac Main.java javah -jni Main gcc -shared -fpic -o libMain.so -I${JAVA_HOME}/include \ -I${JAVA_HOME}/include/linux Main.c java -Djava.library.path=. Main 您将在屏幕上看到:8。 预设: 自己安装了jdk。 安装必备:sudo apt-get install build-essential. 指定 Java 的路径。我有 export JAVA_HOME='/usr/java/jdk1.8.0_131' 该示例展示了如何从 Java 调用 C 代码并返回结果。 什么时候需要? 操作系统相关的东西。 一些复杂的计算。数学库通常是用 C 编写的。
native表示该方法未在 Java 代码中实现。与 JNI (Java Native Interface) 结合使用。通常,假设该方法是用c代码实现的。磁盘、网络等 在 C 部分实现,Java 包装器调用这些方法。
现在手头只有Ubuntu。我会给你一个例子。
您有主要的 Java 文件Main.java:
和Main.c
c文件:另一个要构建的Makefile:
让我们把这整个事情进行下去:
您将在屏幕上看到:
8。预设:
sudo apt-get install build-essential.export JAVA_HOME='/usr/java/jdk1.8.0_131'该示例展示了如何从 Java 调用 C 代码并返回结果。
什么时候需要?