谁给解释一下native这个关键字 native用在类的method前面,表示这个method不是用java实现的。/**例如*/native xxxMethod(); 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 method implemented in another language c/c++..... java语言是运行在虚拟机上的,java又是不允许直接访问硬件的,(也就是java安全性的体现)而java想要做一些例如绘图、画线之类的要去操作硬件的事情的话,必然要用到底层一些的调用。这就引出了native的关键字!native是一个用来修饰方法的关键字!用它修饰的方法,在虚拟机里都有一个与这个java方法同名的函数,去做java想要做的事情!也就是说:调用到native修饰的方法,其实就是调用虚拟机里的一个同名方法去做要做的事!这也就是为什么native方法都没有方法体的原因!例如Graphics类里有一个drawRect的方法。它的定义就是:public native void drawRect(int x, int y, int width, int height);调用到它的时候,就是告诉虚拟机,我要画一个根据x,y,width,height这些参数定义的矩形!而实际起到作用去画这个矩形的,是虚拟机里的一个名为XXXX_XXXX_drawRect的C函数XXX使这个函数的打包路径,和import中的XXX.XXX差不多!简单说:其实java根本什么也没做,做的只是一些面向对象的定义(但这些定义也够复杂)而“干实事”的都一些虚拟机里的那些用C写成的函数!这是我的理解,你能明白吗?:)祝你成功!! Java 实现MySQL数据库备份与还原问题 简单的贪吃蛇,上源码 struts 问题:Attribute class invalid for tag link according to TLD 小问题,大思考 关于处理流的问题 能跳跃学JAVA吗?? 如何判断一个文本文件有多少行? 那位大哥 对事件有研究 请看题? 求救,布局问题:) 请教request.getParameterNames()的用法 怎样把整型化为字符型? 急:请问如何实现函数中的数组返回?
java又是不允许直接访问硬件的,
(也就是java安全性的体现)而java想要做一些例如绘图、画线之类的要去操作硬件的事情的话,
必然要用到底层一些的调用。
这就引出了native的关键字!native是一个用来修饰方法的关键字!
用它修饰的方法,在虚拟机里都有一个与这个java方法同名的函数,
去做java想要做的事情!
也就是说:
调用到native修饰的方法,
其实就是调用虚拟机里的一个同名方法去做要做的事!
这也就是为什么native方法都没有方法体的原因!
例如Graphics类里有一个drawRect的方法。
它的定义就是:
public native void drawRect(int x, int y, int width, int height);
调用到它的时候,就是告诉虚拟机,
我要画一个根据x,y,width,height这些参数定义的矩形!
而实际起到作用去画这个矩形的,
是虚拟机里的一个名为XXXX_XXXX_drawRect的C函数
XXX使这个函数的打包路径,和import中的XXX.XXX差不多!简单说:
其实java根本什么也没做,
做的只是一些面向对象的定义(但这些定义也够复杂)
而“干实事”的都一些虚拟机里的那些用C写成的函数!这是我的理解,你能明白吗?:)祝你成功!!