native关键字
## 简介 > 阅读Java源码,经常能看到`native`关键字修饰的方法,如`Object`类中
渲染中...
## 简介
> 阅读Java源码,经常能看到`native`关键字修饰的方法,如`Object`类中的`getClass()、clone()`等等方法,都使用了`native`关键字,使用`native`的作用是什么呢?
## 概述
简单来讲,使用`native`修饰的方法,是不能被实现的方法,底层是调用的本地API,常见的就是调用C语言开发的API。
<!-- more -->
参考文章:[Java关键字——native](https://cloud.tencent.com/developer/article/1079382?from=article.detail.1753746&areaSource=106000.1&traceId=3xNfEcIz8J-AcdLw7_CNr)
## native方法开发方式
虽然使用`native`修饰的方法不能被实现,但是可以自己去开发一个本地API,然后就可以使用`native`修饰的方法调用该API,这样也算是变相实现了`native`修饰的方法。
开发步骤大致如下:
1. 编写Java类,并编写`native`方法;
2. 使用`javac`命令编译Java代码;
3. 使用`javah -jni xxx`命令生成`xxx.h`的c语言文件;
4. 编写`xxx.h`文件,实现要被调用的方法;
5. 编译`xxx.h`文件,生成对应的`dll`文件;
6. Java类中加载编译好的`dll`文件,即可调用`xxx.h`中实现的方法。
## 拓展
`native`一般用于Java语言无法直接实现的功能,比如操作系统硬件,如:内存、打印机等等。此类功能可以使用C、C++等语言开发,编译后生成`dll`库文件,然后使用Java调用即可。
由此可见,要想开发`native`类型的方法,最好要掌握一门其他语言。
`native`方法其实就是Java中的`JNI(Java Native Interface)`的实现方式,`JNI`详细情况可自行了解,上面参考文章中也有介绍。
### Java代码示例
```java
public class HelloJNI {
// native 关键字告诉 JVM 调用的是该方法在外部定义
private native void helloJNI();
static{
System.loadLibrary("helloJNI"); //载入本地库
}
public static void main(String[] args) {
HelloJNI jni = new HelloJNI();
jni.helloJNI();
}
}
```
END
评论
登录后查看和发表评论
前往登录