日期:2014-05-20  浏览次数:20639 次

关于native方法?
在Object.class里看到如下一段代码
private static native void registerNatives();
static {
registerNatives();
}
在网上查了查,大致了解native是java调用其他语言编写的可执行程序的一个接口,但都没有实例,也不能更深刻的认识。希望给个小例子,让我一目了然。还有,顺便说一下下面的static直接加花括号的作用。

------解决方案--------------------
引用楼主 leiht 的帖子:
在Object.class里看到如下一段代码
private static native void registerNatives();
static {
registerNatives();
}
在网上查了查,大致了解native是java调用其他语言编写的可执行程序的一个接口,但都没有实例,也不能更深刻的认识。希望给个小例子,让我一目了然。还有,顺便说一下下面的static直接加花括号的作用。

------解决方案--------------------
顶楼上,native声明的方法代表改方法体是由本地方法实现的。
static加载的代码块为静态代码块,当程序被加载到内存时执行一次。
------解决方案--------------------
顶楼上,native声明的方法代表改方法体是由本地方法实现的。
static加载的代码块为静态代码块,当程序被加载到内存时执行一次。
------解决方案--------------------
的确,native方法是用非java语言实现的,至于static代码块就是静态代码块了,加载这个类的时候括号内代码执行一次
------解决方案--------------------
关于native方法是如何实现的,java核心技术里面有介绍,static是静态初始化块,当类加载入虚拟机时执行。
native的实现例子最多的是jdk,因为jdk大部分基础功能都是用native实现的,你可以下载jdk源代码查看native方法的实现,源代码可以到sun官方下载到。
------解决方案--------------------
native方法可能用c、c++也可能用汇编实现。和具体的系统环境有关系,要不不会平台独立。
------解决方案--------------------
Java code

public class dll {
    public synchronized native static String coding(String sin); //加密
    public synchronized native static String decoder(String sin); //解密

    static{ 

    System.loadLibrary("javaDC"); 

    }
}