覆盖界面?

时间:2016-01-05 19:45:26

标签: java interface minecraft override minecraft-forge

我正在为Minecraft游戏创建一个mod,它有一个实现游戏中命令的界面。我需要mod来实现该接口,但是使用不兼容的方法(不同的返回类型)覆盖其中一个方法。但我需要防止实现该接口的其他类无法工作或游戏无法识别的情况。

我认为这需要使用与原始接口相同的新接口来覆盖接口,但是使用该方法的重载版本来支持mod的需求。这是可能的(还是有其他方法可以实现这个目标吗?)

3 个答案:

答案 0 :(得分:2)

考虑接口的一种方式是作为合同 实现类必须严格遵守此合同。 这意味着方法签名(包括返回值和参数)必须完全匹配 接口的整个要点是在不严格了解实现的情况下定义交互。

如果您要实施的互动不同,那么您可能会尝试以不适合的方式使用某些内容。

即使可以对接口进行子类化,也会很快变得混乱。 创建一个新的界面(所有其他方法都相同)可能是你最感兴趣的。 由于它不能与使用接口A的类相比,因此您可以通过完全分离来节省自己的麻烦。

答案 1 :(得分:1)

Mojang / forge团队提供的接口旨在用于mojang / forge代码。他们希望返回接口返回的结果类型。如果他们没有得到合同/接口定义的那么代码将崩溃/不编译。

似乎您正在尝试为自己的项目/ api使用特定用途的接口。
考虑专门为您打算使用它的目的编写一个新接口。不要修改核心接口。

一个类可以继承多个接口,因此这不是问题。您可以实现AND forge / mojang接口和您自己的接口。

答案 2 :(得分:0)

您可以实现mod类。然后覆盖该方法。还要编写另一个方法,它会使您实现的类中的方法重载。这样你就不必改变界面了。