注意:我将提供一些代码和伪代码。如果这还不够,请立即告诉我,我可以链接完整的代码。
我正在尝试创建一种在玩家注入咒语时触发的事件(完全披露:我正在为Minecraft编码)。我的计划是制作一个拼写界面,然后让每个拼法实现该界面。法术可能是像LeapSpell HealSpell和RunAwaySpell这样的东西。
法术(它实际上不是因为样式原因而被称为法术)界面非常简单:
public interface Flashpaper {
public void use(Player p);
public int getCost();
}
当我进入法术工具时,我会添加更多方法,但是现在能够施放,并且能够恢复法术力法术的能力已经足够了。
当我尝试使用该法术时,问题开始堆积。
在处理事件的类中(我是如何将这行代码解除的,因为它不相关)我写这个:
LeapFlashpaper.use((Player) event.getPlayer());
LeapFlashpaper课程就是其中一个"法术"这扩展了原始的Flashpaper界面。问题是,现在eclipse抱怨说,该方法应该是静态的。
将方法更改为static会破坏界面,因为尽管运行java8 eclipse不允许在接口内部使用静态方法。
我是否误解了界面?这是我第一次使用它,我认为这是一个使用它的好机会。每次我创造一个新法术时,基本方法都将在那里。这是我确保每个新法术都有正确方法的方法。
所以我再问:我在这里误解了什么吗?我是否尝试将接口用于他们本不打算使用的东西......或者......是的,我的问题是什么?
请发表你喜欢的任何评论,因为我是否在做一些非常愚蠢的事情而感到迷茫......