本地方法(JNI)——编码签名

【0】README

1) 本文部分文字描述 转自 core java volume 2 , 旨在理解 本地方法(JNI)——编码签名 的基础知识 ;


【1】编码签名相关

1) 混编规则:为了访问实例域和调用用 java 定义的方法,你必须学习将数据类型的名称和方法签名进行混编的规则;
2)方法签名: 描述了参数和该方法返回值的类型;(干货——方法签名的定义)
3)下面是编码方案:

B==byte
C==char
D==double
F==float
I==int
J==long
Lclassname== 类的类型
S==short
V==void
Z==boolean;

4)几个荔枝:

  • 4.1) 为了描述数组类型, 使用: [Ljava/lang/String;
  • 4.2)一个float[][] 可以描述为: [[F;
  • 4.3)要建立一个方法的完整签名, 需要吧括号内的参数类型都列出来, 然后列出返回值类型, 如: 一个接收两个整型参数并返回一个整数的方法编码为: (II)I;
  • 4.4)在前一个荔枝中, 我们使用的print 方法的签名是: (Ljava/lang/String;)V == 该方法接收一个字符串,返回值是 void;

Attention) 在 L 表达式结尾处的分号:是类型表达式的终止符, 而不是参数间的分隔符; 

  • A1)看个荔枝:构造器Employee(java.lang.String, double, java.util.Date),具有如下签名:”(Ljava/lang/String;DLjava/util/Date;)V” 
  • A2)注意,在D 和 Ljava/util/Date; 之间没有分隔符;
  • A3)另外要注意在这个编码方案中, 必须用 / 代替圆点 来分割包和类名;
  • A4)结尾的V 表示返回类型为 void, 即使对 java 的构造器没有指定返回类型, 也需要将V 添加到 虚拟机签名中;

5)看个荔枝: 用带有选项 -s 的 javap 命令来从类文件中产生方法签名。如,运行 javap -s -private Employee
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值