zh_cn:tutorial:mixin_injects
Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
zh_cn:tutorial:mixin_injects [2021/07/11 10:34] – created solidblock | zh_cn:tutorial:mixin_injects [2023/12/18 01:50] (current) – solidblock | ||
---|---|---|---|
Line 5: | Line 5: | ||
<code java> | <code java> | ||
- | @Inject(method = "", | + | @Inject(method = "方法名称或签名", at = @At("注入点引用")) |
- | private void injectMethod(METHOD ARGS, CallbackInfo info) { | + | private void injectMethod(方法参数, CallbackInfo info) { |
} | } | ||
</ | </ | ||
- | [[https:// | + | [[https:// |
^ 名称 ^ 描述 ^ | ^ 名称 ^ 描述 ^ | ||
Line 19: | Line 19: | ||
| TAIL | 最终的返回语句前 | | | TAIL | 最终的返回语句前 | | ||
- | 注入点引用语句或成员的情况下,目标值设置在// | + | 注入点引用语句或成员的情况下,目标值设置在 //@At// 中。目标值使用 JVM 字节码描述符指定。 |
- | Oracle定义了如下[[https:// | + | Oracle 定义了如下 [[https:// |
^ 描述符 ^ 原名 ^ 描述 ^ | ^ 描述符 ^ 原名 ^ 描述 ^ | ||
| B | byte | 带符号的字节 | | | B | byte | 带符号的字节 | | ||
- | | C | char | Basic Multilingual Plane中的Unicode字符代码点,使用UTF-16编码 | | + | | C | char | Basic Multilingual Plane 中的 Unicode 字符代码点,使用 UTF-16 编码 | |
| D | double | 双精度浮点值 | | | D | double | 双精度浮点值 | | ||
| F | float | 单精度浮点值 | | | F | float | 单精度浮点值 | | ||
Line 32: | Line 32: | ||
| L// | | L// | ||
| S | short | 带符号的短整型 | | | S | short | 带符号的短整型 | | ||
- | | Z | boolean | '' | + | | Z | boolean | '' |
| [ | reference | 单数组维度 | | | [ | reference | 单数组维度 | | ||
- | 方法描述符包括方法名称,接着一系列包含输入类型的括号,以及输出类型。Java中定义的像'' | + | 方法描述符包括方法名称,接着一系列包含输入类型的括号,以及输出类型。Java 中定义的像 '' |
- | // | + | 在这个返回类型为 void 的例子中,你需要使用 V(空描述符)作为,例如,'' |
+ | |||
+ | 泛型将会移除,因为泛型在运行的时候不存在,因为像 '' | ||
+ | |||
+ | //@Inject// 方法总是返回 void 类。方法名称不重要,最好用这次注入所做的事情来命名。方法头中,最先是目标方法的变量,随后是 '' | ||
=== 从注入中返回和取消 === | === 从注入中返回和取消 === | ||
- | 如需在方法中提前取消或者返回,使用'' | + | 如需在方法中提前取消或者返回,使用 '' |
<code java> | <code java> | ||
@Inject(method = " | @Inject(method = " | ||
Line 47: | Line 51: | ||
=== 向构造器中注入 === | === 向构造器中注入 === | ||
- | 如需向构造器中注入,方法目标使用''< | + | 如需向构造器中注入,方法目标使用 ''< |
- | 如需向静态构造器中注入,方法名称使用''< | + | 如需向静态构造器中注入,方法名称使用 ''< |
===== 实例 ===== | ===== 实例 ===== | ||
- | 以下示例会把一个print语句注入到'' | + | 以下示例会把一个 print 语句注入到 '' |
<code java [enable_line_numbers=" | <code java [enable_line_numbers=" | ||
Line 64: | Line 68: | ||
</ | </ | ||
- | 关于此实例的更多信息,可以在[[https:// | + | 关于此实例的更多信息,可以在 [[https:// |
zh_cn/tutorial/mixin_injects.1625999649.txt.gz · Last modified: 2021/07/11 10:34 by solidblock