A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李江 中级黑马   /  2013-8-7 17:57  /  2000 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 graspDN 于 2013-8-8 21:45 编辑
  1. public class Object {

  2.     private static native void registerNatives();
复制代码
在java源代码Object类中看到这样声明函数,请问native关键字在此处是什么意思?它有什么用途?

6 个回复

倒序浏览
本帖最后由 Jiewin 于 2013-8-7 18:22 编辑

native是本地的。就是告诉编译器,这个函数不是java实现的,比如java无法直接操作系统硬件时,用native来扩展java的功能
回复 使用道具 举报
Jiewin 发表于 2013-8-7 18:17
native是本地的。就是告诉编译器,这个函数不是java实现的,比如java无法直接操作系统硬件时,用native来扩 ...
  1. public class TestDemo {
  2.         public native void displayHelloWorld();

  3.         static {
  4.                 System.loadLibrary("hello");
  5.         }

  6.         public static void main(String[] args) {
  7.                 new TestDemo().displayHelloWorld();
  8.         }
  9. }
复制代码
如何让它运行起来啊?
回复 使用道具 举报
graspDN 发表于 2013-8-7 18:35
如何让它运行起来啊?

这个关键字没有具体去理解过,你想知道怎么用,给你推荐一篇文章
http://www.apkbus.com/forum.php?mod=viewthread&tid=337
回复 使用道具 举报
此句使用native关键字说明这个registerNatives()方法是原生函数,也就是这个registerNatives()方法是用C/C++语言实现的,并且被编译成了DLL,由java去调用。
这些函数的实现体在DLL中,JDK的源代码中并不包含,你应该是看不到的。对于不同的平台它们也是不同的。这也是java的底层机制,实际上java就是在不同的平台上调用不同的native方法实现对操作系统的访问的。
Java无法直接访问到操作系统底层(如系统硬件等),为此 Java使用native方法来扩展Java程序的功能。可以将native方法比作Java程序同C程序的接口,其实现步骤:
  1、在 Java中声明native()方法,然后编译;
  2、用javah产生一个.h文件;
  3、写一个.cpp文件实现native导 出方法,其中需要包含第二步产生的.h文件(注意其中又包含了JDK带的jni.h文件);
  4、将第三步的.cpp文件编译成动态链接库文 件;
  5、在Java中用System.loadLibrary()方法加载第四步产生的动态链接库文件,这个native()方法就可以在 Java中被访问了。希望能帮助你理解!
回复 使用道具 举报
在JAVA中 native关键字表示一个方法只可以调用,但是不能编写。
native是方法修饰符。Native方法是由另外一种语言(如c/c++,FORTRAN,汇编)实现的本地方法。因为在外部实现了方法,所以在java代码中,就不需要声明了,有点类似于借口方法。Native可以和其他一些修饰符连用,但是abstract方法和Interface方法不能用native来修饰。
回复 使用道具 举报
Jiewin 发表于 2013-8-7 18:42
这个关键字没有具体去理解过,你想知道怎么用,给你推荐一篇文章
http://www.apkbus.com/forum.php?mod=v ...

貌似懂了一点
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马