我有一個接口問題,我必須寫。在我們公司的項目中,我們有一個類提供一些Web方法,如:logIn,reporting,addNote和不同的方法。每種方法都會拋出由某人寫的異常(可能是寫這個類的同一個人)。 現在我必須寫這個類的「等價物」(使用Web服務)併爲這兩個類編寫接口。但是我的類沒有拋出任何異常(我不寫拋出異常在簽名中,我用try-catch塊來處理這個異常)。是否有任何簡單的方法來爲這兩個類編寫接口(由於該異常而具有不同的簽名)?或者我必須重寫這個第一類並在其中使用try-catch塊(或修改我的類)。我想避免這種情況...兩個類似接口的接口
回答
在你的接口必須定義異常定義你的方法的簽名。 換句話說,例外是簽名的一部分。
所以,我必須改變這個第一類,它有關於拋出異常或添加到我的類方法這個異常的信息?是否有某種「看到」這種情況? – caro2 2013-04-29 14:48:47
(我不寫在簽名拋出異常,我用try-catch塊與此異常處理)
聽起來異常處理的濫用......除非你的代碼可以確實處理所有這些例外。對異常做的正確的事情是讓它傳播到一個可以正確處理的cakll堆棧上的點。
但無論哪種方式,你可以寫在方法聲明爲拋出異常的通用接口。在您的課程版本中,只需將特例留出簽名;例如
public interface Foo {
public void bar() throws SomeException;
}
public class OldFoo implements Foo {
public void bar() throws SomeException { ... }
}
public class NewFoo implements Foo {
public void bar() { ... }
}
接口方法拋出異常是合法的Java,並且該方法的實現不拋出它。
是的,它的工作原理!這就是我需要:)謝謝你的幫助。但這是一種不好的做法嗎? – caro2 2013-04-29 14:56:11
不是。這樣做不是不好的做法。然而,它是「在不能正確處理它們的地方捕捉例外的不良做法。 – 2013-04-29 15:31:27
如果具體實現的一個拋出一個異常,而另一個捕獲它,不幸的是你不能使用相同的接口。異常是方法定義的一部分,如果兩個方法處理異常的方式不同,那麼它們就不一樣了。所以,你將不得不修改我害怕的一個類。
你只能覆蓋在接口中聲明的方法拋出相同的異常或派生類型例外,我的意思是,你不能讓你實現的方法不拋出任何異常,而在你的接口中的方法被描述爲拋出特定的異常。
- 1. 類似接口
- 2. 兩個接口?
- 3. 兩個類之間的接口拆分
- 4. 4個接口的接口?
- 5. 爲這兩個PHP類製作接口?
- 6. 我需要在wpf中構建一個接口,類似於TFS查詢接口
- 7. C++/CLI接口類與接口結構
- 8. 類設計:類實現接口實現另一個接口
- 9. 從接口類
- 10. C# - 接口類
- 11. 接口類與類
- 12. 你會爲2個類實現一個類或2個接口的接口嗎
- 13. 接口與接口
- 14. java中的接口接口
- 15. 一個接口有兩個類型參數。我可以使用兩種類型的接口來實現接口嗎,這樣它們就可以兼容了嗎?
- 16. Flow有一個與Typescript中的DefinitellyTyped類似的接口庫嗎?
- 17. Java - 接口,實例化一個接口?
- 18. 如何在TypeScript中聲明一個類似Stream的接口?
- 19. 兩個庫之間的接口
- 20. 訪問Android中的兩個GSM接口
- 21. Mocking none接口類
- 22. 類接口複製
- 23. vb.net接口和類
- 24. JS - jQuery類接口?
- 25. 模板類接口
- 26. 數據類接口
- 27. 接口節點類
- 28. 接口泛型類
- 29. 一個類的多個接口
- 30. 統一IoC註冊/解析兩個類與接口和兩種
如果你的類中的方法拋出異常,然後由你的類實現應該會拋出異常的方法接口的方法。 – 2013-04-29 14:43:15