在Object.class里看到如下一段代码
private static native void registerNatives();
static {
registerNatives();
}
在网上查了查,大致了解native是java调用其他语言编写的可执行程序的一个接口,但都没有实例,也不能更深刻的认识。希望给个小例子,让我一目了然。还有,顺便说一下下面的static直接加花括号的作用。
private static native void registerNatives();
static {
registerNatives();
}
在网上查了查,大致了解native是java调用其他语言编写的可执行程序的一个接口,但都没有实例,也不能更深刻的认识。希望给个小例子,让我一目了然。还有,顺便说一下下面的static直接加花括号的作用。
解决方案 »
- Java中哪些类是不可以被继承的啊?高人给总结下吧....
- 用java 如何在txt 文件里 写入东西?
- 一个关于if..else语句的问题
- 用JAVA循环添加大量数据到Sql Server时出现“Error establishing socket”
- 我以前是学asp.net的,我刚学用Struts的MVC2来做jsp网页,看了很多资料,有些东西很糊涂的,我对MVC2和asp.net中的三层结构的关系的理解如下
- 向同行的JAVA朋友们请教一个问题!!
- 一个初学者LOG4j关于的问题,请高手解答
- PreparedStatement中的setArray(int i, Array x) 应该怎样使用???
- 请问这是什么错误Exception in thread "main" java.lang.NullPointerException
- 各位大俠幫幫我,很簡單的問題!
- 这个String创建了几个对象
- 魔板游戏中如何提示已经完成排列
如下代码就是registerNatives(); 的C语言的实现:JNIEXPORT void JNICALL
Java_java_lang_Object_registerNatives(JNIEnv *env, jclass cls)
{
(*env)->RegisterNatives(env, cls,
methods, sizeof(methods)/sizeof(methods[0]));
}
2)static直接加花括号的作用:表示 类初始化块
当Object类被装入内存并初始化时,会自动执行该花括号内部的代码.
static加载的代码块为静态代码块,当程序被加载到内存时执行一次。
static加载的代码块为静态代码块,当程序被加载到内存时执行一次。
native的实现例子最多的是jdk,因为jdk大部分基础功能都是用native实现的,你可以下载jdk源代码查看native方法的实现,源代码可以到sun官方下载到。
public class dll {
public synchronized native static String coding(String sin); //加密
public synchronized native static String decoder(String sin); //解密 static{ System.loadLibrary("javaDC"); }
}