设为首页 加入收藏

TOP

Android开发实践:JNI函数签名生成器
2015-02-02 14:32:30 来源: 作者: 【 】 浏览:9
Tags:Android 开发 实践 JNI 函数 签名 成器

Android开发实践:JNI函数签名生成器


原理其实并不复杂,每种基本类型对应一个单字符签名,而类则对应为"L"+类的全路径+";",数组类型则对应"["+元素类型的签名,函数的签名则是:(各参数类型签名)+ 返回类型的签名。


搞清楚了基本原理,我们就可以尝试自定义一个Java工具类,为Java的Native函数生成签名字符串了,具体代码如下:


该SignatureGen类提供一个支持变参的函数getSignature来获取一个Java函数的签名字符串,第一个参数为函数返回值类型的class对象,变参为每一个函数参数类型的class对象。


具体用法示例如下,打印出不同类型的函数的签名字符串。


Log.d("Signature","void func() --> " + SignatureGen.getSignature(Void.class));
?
Log.d("Signature","boolean func() --> " + SignatureGen.getSignature(Boolean.class));
?
Log.d("Signature","int func(boolean a) --> " + SignatureGen.getSignature(Integer.class,Boolean.class));
?
Log.d("Signature","int func(boolean a,String b) --> " + SignatureGen.getSignature(Integer.class,Boolean.class,String.class));
?
Log.d("Signature","int func(byte[] c) --> " + SignatureGen.getSignature(Integer.class,Byte[].class));? ? ?
?
Log.d("Signature","long func(int n,String str,int arr) -->" + SignatureGen.getSignature(Long.class,Integer.class,String.class,Integer[].class));


输出结果截屏如下:


Android开发实践:JNI函数签名生成器


关于JNI函数签名生成器就介绍到这儿了,原理并不复杂所以我也没有进行过多的分析,希望这个工具类能够在大家今后的项目中派上用场,有任何疑问欢迎留言或者来信lujun.hust@gmail.com交流。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Struts2 request_locale国际化介绍 下一篇Struts2.0 框架搭建步骤详解

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: