zh_cn:tutorial:accesswideners
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
zh_cn:tutorial:accesswideners [2021/10/09 01:23] – [文件格式] solidblock | 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 无法做到: |
* 需要访问一个(包内)的私有类,尤其是为了 @Shadow 修饰或在 Mixin 类内访问一个字段或方法。 | * 需要访问一个(包内)的私有类,尤其是为了 @Shadow 修饰或在 Mixin 类内访问一个字段或方法。 | ||
* 需要重写使用 final 修饰的子类。 | * 需要重写使用 final 修饰的子类。 | ||
Line 16: | Line 16: | ||
===== 文件格式 ===== | ===== 文件格式 ===== | ||
- | 一个特定的文件格式被用来定义你的mod中包含的访问变化。为了帮助IDE,你应该使用" | ||
- | 需要在你的模组里包含一个声明修改访问权限的特殊文件,为了方便,你应该在IDE中使用 '' | + | 需要在你的模组里包含一个声明修改访问权限的特殊文件,为了帮助,你应该在IDE中使用 '' |
该文件首行应该遵循下述格式,'' | 该文件首行应该遵循下述格式,'' | ||
Line 58: | Line 57: | ||
</ | </ | ||
- | - access | + | - access |
- classname 是拥有者类 | - classname 是拥有者类 | ||
- methodName 是方法名称 | - methodName 是方法名称 | ||
Line 65: | Line 64: | ||
== 字段 == | == 字段 == | ||
- | 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 71: | 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 115: | Line 114: | ||
</ | </ | ||
- | Loom 0.8 or lower: | + | Loom 0.8 或更低版本: |
<code groovy [enable_line_numbers=" | <code groovy [enable_line_numbers=" | ||
Line 123: | Line 122: | ||
</ | </ | ||
- | fabric.mod.json: | + | fabric.mod.json: |
<code json [enable_line_numbers=" | <code json [enable_line_numbers=" |
zh_cn/tutorial/accesswideners.1633742635.txt.gz · Last modified: 2021/10/09 01:23 by solidblock