覆盖接口?
Override an interface?
我正在为游戏 Minecraft 创建一个 mod,它有一个接口来实现游戏中的命令。我需要 mod 来实现该接口,但使用不兼容的方法(不同的 return 类型)覆盖其中一个方法。但我需要防止实现该接口的其他 类 无法工作或无法被游戏识别的情况。
我认为这需要使用与原始接口相同的新接口覆盖接口,但使用该方法的重载版本来支持 mod 的需求。这可能吗(或者我有其他方法可以做到这一点吗?)
您可以实施 mod class。然后覆盖该方法。还要编写另一个方法,它将重载您实现的 class 中的方法。这样您就不必更改界面。
考虑接口的一种方式是将其视为契约。
实施 类 必须 严格 遵守此合同。
这意味着方法签名(包括 return 值和参数)必须完全匹配。
接口的全部意义在于在不严格了解实现的情况下定义交互。
如果您希望实现的交互不同,那么您可能正在尝试以非预期的方式使用某些东西。
即使可以对接口进行子类化,它也会很快变得混乱。
创建一个新接口可能最符合您的利益(所有其他方法都相同)。
由于它无法与使用接口 A 的 类 相提并论,因此您可以通过将其完全分离来省去麻烦。
Mojang/forge 团队提供的接口旨在用于 mojang/forge 代码。他们希望结果类型 return 接口return。如果他们没有得到 contract/interface 定义的代码,代码将 crash/not 编译。
您似乎正试图将一个界面用于特定目的,用于自己的 project/api。
考虑专门为您打算使用它的目的编写一个新界面。不要修改核心接口。
一个class可以继承多个接口,所以这不是问题。您可以实现 AND forge/mojang 接口和您自己的接口。
我正在为游戏 Minecraft 创建一个 mod,它有一个接口来实现游戏中的命令。我需要 mod 来实现该接口,但使用不兼容的方法(不同的 return 类型)覆盖其中一个方法。但我需要防止实现该接口的其他 类 无法工作或无法被游戏识别的情况。
我认为这需要使用与原始接口相同的新接口覆盖接口,但使用该方法的重载版本来支持 mod 的需求。这可能吗(或者我有其他方法可以做到这一点吗?)
您可以实施 mod class。然后覆盖该方法。还要编写另一个方法,它将重载您实现的 class 中的方法。这样您就不必更改界面。
考虑接口的一种方式是将其视为契约。
实施 类 必须 严格 遵守此合同。
这意味着方法签名(包括 return 值和参数)必须完全匹配。
接口的全部意义在于在不严格了解实现的情况下定义交互。
如果您希望实现的交互不同,那么您可能正在尝试以非预期的方式使用某些东西。
即使可以对接口进行子类化,它也会很快变得混乱。 创建一个新接口可能最符合您的利益(所有其他方法都相同)。 由于它无法与使用接口 A 的 类 相提并论,因此您可以通过将其完全分离来省去麻烦。
Mojang/forge 团队提供的接口旨在用于 mojang/forge 代码。他们希望结果类型 return 接口return。如果他们没有得到 contract/interface 定义的代码,代码将 crash/not 编译。
您似乎正试图将一个界面用于特定目的,用于自己的 project/api。
考虑专门为您打算使用它的目的编写一个新界面。不要修改核心接口。
一个class可以继承多个接口,所以这不是问题。您可以实现 AND forge/mojang 接口和您自己的接口。