2014-11-21 243 views
1

在一个接口中,我有一个方法可以在一个实现中使用,但不应该在另一个实现中使用。如果有人在该特定实现中使用该方法,我正在考虑抛出异常。 (这并不是说很容易意外地发现该异常)哪种异常最适合“你不应该在这种情况下运行这种方法”的情况?

更具体地说,该方法是getPlayer(String),其按名称得到PlayerPlayer是一个连接到服务器的客户端,但是在我的第二个实现中,不可能获得任何连接的客户端,因为第二个实现代表存储在某个列表中的其他(缓存和技术上离线的)服务器。

任何帮助表示赞赏。让我知道代码粘贴是否能更好地描述场景的性质。

+1

听起来像一个作品的作品,而不是继承? – 2014-11-21 12:24:02

+0

是的,听起来像组合会更好。如果您希望仅在接口的少数几个实现中使用给定方法,那么很可能您的模型中出现了错误。 – 2014-11-21 12:27:15

+0

我可能会将接口拆分成一个“OnlineServer”和“OfflineServer”,其中只有OnlineServer包含'getPlayer(String)'方法,尽管我觉得这不是你们的意思。 – octopod 2014-11-21 12:31:36

回答

2

我会扔东西的方法已经在非法或不适当的时间调用一个IllegalStateException

信号。换句话说,对于请求的操作,Java环境或Java应用程序不处于适当的状态。

,或者如果您的实现根本不支持的话,你也可以去UnsupportedOperationException

抛出,表明所请求的操作不支持。

0

是强制性的实现接口的所有方法。 此question的接受答案可能有所帮助。

+0

我不反对;接口的所有方法都已实现,但其中一些方法在第二个实现的环境中不起作用。 – octopod 2014-11-21 12:35:02