2014-11-21 259 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