0

注意:我将提供一些代码以及伪代码。如果这还没有足够的信息让我现在可以链接完整的代码。

我正在尝试创建一种在玩家咒语时触发的事件(完全披露:我正在为 Minecraft 编写此代码)。我的计划是制作一个拼写接口,然后让每个拼写都实现该接口。法术可能是 LeapSpell HealSpell 和 RunAwaySpell 之类的东西。

Spell(由于样式原因实际上并不称为 spell)界面相当简单:

public interface Flashpaper {
    public void use(Player p);
    public int getCost();
}

随着我对法术实用程序的深入了解,我将添加更多方法,但现在可以施放的能力,以及返回法术法力消耗的能力已经足够了。

但是,当我尝试使用该咒语时,问题开始堆积起来。

在处理事件的类中(我如何让这行代码触发已被省略,因为它不相关)我这样写:

LeapFlashpaper.use((Player) event.getPlayer());

LeapFlashpaper 类是扩展原始 Flashpaper 界面的“咒语”之一。问题是现在eclipse抱怨说该方法应该设为静态。

将方法更改为静态会破坏接口,因为尽管运行 java8 eclipse 将不允许接口内的静态方法。

我误解了接口吗?这是我第一次使用它,我认为这是一个使用它的好机会。每次我造一个新法术,基本的方法都会有。这是我确保每个新法术都有正确方法的方法。

所以我再次问:我在这里误解了什么吗?我是否试图将接口用于它们不应该用于的东西......或者......是的,我的问题是什么?

请发表您喜欢的任何评论,因为我有点迷茫我是否在做一些真正愚蠢的事情......

4

0 回答 0