zh_cn:tutorial:accesswideners
Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
zh_cn:tutorial:accesswideners [2021/10/03 12:39] – 初次添加,待完成 hendrix-shen | zh_cn:tutorial:accesswideners [2021/10/25 10:14] (current) – [Access Wideners] solidblock | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== | + | ====== |
- | Access wideners 提供了一种放宽类、方法、字段访问权限的方式。Access wideners | + | 访问加宽(Access wideners)提供了一种放宽类、方法、字段访问权限的方式。访问加宽类似于著名的 Access Transformers. |
- | Access wideners | + | 访问加宽应该**仅在**使用 Mixin 无法实现时使用。目前只有以下两种情景 Mixin 无法做到: |
- | 目前只有以下两种情景 Mixin 无法做到: | + | |
* 需要访问一个(包内)的私有类,尤其是为了 @Shadow 修饰或在 Mixin 类内访问一个字段或方法。 | * 需要访问一个(包内)的私有类,尤其是为了 @Shadow 修饰或在 Mixin 类内访问一个字段或方法。 | ||
* 需要重写使用 final 修饰的子类。 | * 需要重写使用 final 修饰的子类。 | ||
* 在你考虑重写使用 final 修饰的方法之前,使用注入器等方法修改。 | * 在你考虑重写使用 final 修饰的方法之前,使用注入器等方法修改。 | ||
* 如果你想为一个包含私有构造方法的类创建子类,wideners 是个不错的选择 | * 如果你想为一个包含私有构造方法的类创建子类,wideners 是个不错的选择 | ||
- | * | + | |
为了让 access widener 造成的的变化显示在反编译的源代码中,请运行 '' | 为了让 access widener 造成的的变化显示在反编译的源代码中,请运行 '' | ||
Line 17: | Line 16: | ||
===== 文件格式 ===== | ===== 文件格式 ===== | ||
- | 一个特定的文件格式被用来定义你的mod中包含的访问变化。为了帮助IDE,你应该使用" | ||
- | 需要在你的模组里包含一个声明修改访问权限的特殊文件,为了方便,你应该在IDE中使用 '' | + | 需要在你的模组里包含一个声明修改访问权限的特殊文件,为了帮助,你应该在IDE中使用 '' |
该文件首行应该遵循下述格式,'' | 该文件首行应该遵循下述格式,'' | ||
Line 27: | Line 25: | ||
</ | </ | ||
- | **再次提醒,命名空间应该在你使用 yarn 命名时设置为 '' | + | **再次提醒,命名空间应该在你使用 yarn 命名时设置为 '' |
Access widener 文件允许使用空行和和以 # 开头的注释。 | Access widener 文件允许使用空行和和以 # 开头的注释。 | ||
Line 51: | Line 49: | ||
- 访问权可以是 // | - 访问权可以是 // | ||
- | == Methods | + | == 方法 |
- | Method access can be changed by specifying the access, class name, method name and method descriptor as named the mappings namespace defined in the header. | + | 可以通过指定访问权限、类名称、方法名称和方法描述符来改变方法访问权,就像上面定义的映射命名空间一样。 |
<code [enable_line_numbers=" | <code [enable_line_numbers=" | ||
Line 59: | Line 57: | ||
</ | </ | ||
- | - access | + | - access |
- | - classname | + | - classname |
- | - methodName | + | - methodName |
- | - methodDesc | + | - methodDesc |
- | == Fields | + | == 字段 |
- | Field access can be changed by specifying the access, class name, field name and field descriptor as named the mappings namespace defined in the header. | + | 字段的访问权可以通过指定访问权、类名称、字段名称和字段描述符来修改,就像上面定义的映射命名空间一样。 |
<code [enable_line_numbers=" | <code [enable_line_numbers=" | ||
Line 72: | Line 70: | ||
</ | </ | ||
- | - access | + | - access |
- | - className | + | - className |
- | - fieldName | + | - fieldName |
- | - fieldDesc | + | - fieldDesc |
- | ===== Access Changes | + | ===== 访问权变更 |
- | === Extendable === | + | === Extendable(可继承) |
- | Extendable should be used where you want to extend a class or override a method. | + | 需要继承最终类或者覆盖最终方法时,用 extendable。 |
- | * Classes are made public | + | * 类将会改成 |
- | * Methods are made protected | + | * 方法会改成 |
- | Making a method | + | 将方法改为 |
- | === Accessible === | + | === Accessible(可访问) |
- | Accessible should be used when you want to access a class, field or method from another class. | + | 需要访问另一个类的类、字段或方法时,用 accessible。 |
- | * Classes are made public | + | * 类将变为 |
- | * Methods are made public | + | * 方法将变为 |
- | * Fields are made public | + | * 字段将会变为 |
- | Making a method or field accessible | + | 将方法或者字段改为 |
- | === Mutable === | + | === Mutable(可修改) |
- | Mutable should be used when you want to mutate a final field | + | 需要修改常量字段时,用 mutable。 |
- | * Fields have final removed | + | * 字段将会移除 |
- | ===== Specifying file location | + | ===== 指定文件位置 |
- | The access widener file location must be specified in your build.gradle | + | 访问加宽文件位置必须在 |
- | Loom 0.9 or higher: | + | Loom 0.9 或更高版本: |
<code groovy [enable_line_numbers=" | <code groovy [enable_line_numbers=" | ||
Line 116: | Line 114: | ||
</ | </ | ||
- | Loom 0.8 or lower: | + | Loom 0.8 或更低版本: |
<code groovy [enable_line_numbers=" | <code groovy [enable_line_numbers=" | ||
Line 124: | Line 122: | ||
</ | </ | ||
- | fabric.mod.json: | + | fabric.mod.json: |
<code json [enable_line_numbers=" | <code json [enable_line_numbers=" |
zh_cn/tutorial/accesswideners.1633264795.txt.gz · Last modified: 2021/10/03 12:39 by hendrix-shen