Java基础之native方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/swjtu2014112194/article/details/85111987

什么是native方法(本地方法)

native方法就是java调用非java代码的接口。native方法是这样一个java方法:该方法的实现由非java语言实现,比如C。

定义一个native方法,不提供方法体(类似于抽象方法)。因为其方法体是由非java语言在外面实现的。

例如Object类:

package java.lang; 
public class Object { 
  ......
  public final native Class<?> getClass(); 
  public native int hashCode(); 
  protected native Object clone() throws CloneNotSupportedException; 
  public final native void notify(); 
  public final native void notifyAll(); 
  public final native void wait(long timeout) throws InterruptedException; 
  ......
}

标识符native可以与所有其他java标识符连用,但是abstract除外。因为native方法暗示方法有方法体,只不过方法体是非java的。而abstract表示没有方法体。

如果一个含有本地方法的类被继承,子类会继承这个本地方法并且可以用java语言重写这个方法(似乎有点奇怪)。但如果本地方法被final标识,它被继承后不能被重写。

使用方法

native方法对应的实现不在当前文件,而是在其他语言(如C和C++)实现的文件中。Java语言本身不能对操作系统底层进行访问和操作,但是可以通过JNI接口调用其他语言来实现对底层的访问。

JNI是Java本机接口(Java Native interface),它是JDK的一部分。JNI允许Java代码使用以其他语言编写的代码和代码库。Invocation API(JNI的一部分)可以用来将Java虚拟机(JVM)嵌入到本机应用程序中,从而允许程序员在本机代码内部调用Java代码。

JNI的书写步骤如下:

  1. 编写带有native方法的java类
  2. 使用javac编译java类
  3. 使用javah –jni来生成后缀名为.h的头文件
  4. 使用其他语言(C,C++)实现本地方法
  5. 将本地方法编写的文件生成动态链接库

猜你喜欢

转载自blog.csdn.net/swjtu2014112194/article/details/85111987
今日推荐