Skip to main content

Mixin通用标识符

这里将介绍Mixin最基础的标识符(部分为JVM自带功能)

域描述符

Oracle定义了如下域描述符

描述符原名描述
Bbyte带符号的字节
CcharBasic Multilingual Plane中的Unicode字符代码点,使用UTF-16编码
Ddouble双精度浮点值
Ffloat单精度浮点值
Iint正数
Jlong长整数
L类名称;reference类名称的实例(注意有分号哦)
Sshort带符号的短整型
Zbooleantrue或 false
[reference单数组维度

方法描述符包括方法名称,接着一系列包含输入类型的括号,以及输出类型。Java中定义的像Object m(int i, double[] d, Thread t)这样的方法描述符会有m(I[DLjava/lang/Thread;)Ljava/lang/Object;这样的方法描述符。

方法定位

在所有注解中,都需要使用method参数,通常填写方法描述符。

如果同名方法只有一个,直接使用方法名即可,不需要完整描述符。

注入点参考

注入点参考定义了注入目标方法的方法主体的哪个代码。下表描述了几个选项:

名称描述
HEAD方法顶部
RETURN返回语句之前
TAIL最终的返回语句前
INVOKE在实例方法调用
INVOKE_ASSIGN在静态方法调用
INVOKE_STRING在只有一个参数的方法调用
FIELD字段

注入点引用语句或成员的情况下,目标值设置在@At中。目标值使用JVM字节码描述符(即域描述符)指定。