@Interface
@Interface 注解有两个主要用途:
- 作为
@Implements注解的一部分,声明要实现的接口和方法前缀。 - 作为独立的注解,用于"软实现"一个接口。
在 @Implements 中使用
这是 @Interface 最常见的用法。它告诉 Mixin 目标类应该实现哪个接口,以及实现方法的 prefix 是什么。
java
@Implements(@Interface(iface = ICustomData.class, prefix = "custom$"))更多信息请参考 。
软实现 (Soft Implementation)
你可以直接在 Mixin 类上使用 @Interface 注解。这被称为"软实现"。它声称目标类实现了指定的接口,但不强制你提供实现。
示例:
java
@Mixin(Block.class)
@Interface(iface = IBreakable.class, prefix = "breakable$")
public class BlockMixin {
// No methods prefixed with "breakable$" are required here
}用途
软实现的主要用途是,当你知道目标类 已经 拥有符合接口规范的方法时,你可以用 @Interface 来形式化地建立这种关系,而无需重新实现这些方法。
例如,假设 IBreakable 接口有一个 breakBlock() 方法。如果 Block 类已经有一个 breakBlock() 方法(或者一个可以被重映射为 breakBlock 的方法),Mixin 就会将这个现有的方法视为接口实现,而不需要你在 Mixin 中提供一个 breakable$breakBlock() 方法。
remap 属性
@Interface 注解有一个 remap 属性(默认为 true),它控制是否对接口中的方法名进行重映射。这在处理混淆环境时非常重要。