在java中,native方法是指本地方法,当在方法中调用一些不是由java语言写的代码或者在方法中用java语言直接操纵计算机硬件时要声明为native方法。
native方法的执行依赖于JVM的设计者,比如在sun HotSpot(JVM)中,通过JNI(Java Native Interface)的API接口来实现本地化。
Native方法常用于两种情况:
1)在方法中调用一些不是由java语言写的代码。
2)在方法中用java语言直接操纵计算机硬件。
在定义一个native方法时,并不提供实现体(有些像定义一个java interface),因为其实现体是由非java语言在外面实现的,下面给了一个示例:
1 2 3 4 5 |
|
native标识符可以与所有其它的java标识符连用,但是abstract除外。因为native标识符暗示这些方法是有实现体的,只不过这些实现体是非java的,但是abstract却显然的指明这些方法无实现体。native与其它java标识符连用时,与同java普通方法并无差别,比如native static表明这个方法可以在不产生类的实例时直接调用。上面的第三个方法用到了native synchronized,JVM在进入这个方法的实现体之前会执行同步锁机制。
native方法的存在并不会对其他类调用这些本地方法产生任何影响,实际上调用这些方法的其他类甚至不知道它所调用的是一个本地方法。如果一个含有本地方法的类被继承,子类会继承这个本地方法并且可以用java语言重写这个方法,同样的如果一个本地方法被fianl标识,它被继承后不能被重写。