我有一個接口問題,我必須寫。在我們公司的項目中,我們有一個類提供一些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. 實現接口到一個類:接口到接口
- 5. 4個接口的接口?
- 6. 在java中的兩個窗口接口?
- 7. 爲這兩個PHP類製作接口?
- 8. 類,它實現了兩個接口
- 9. C#:接口:2個接口
- 10. 我需要在wpf中構建一個接口,類似於TFS查詢接口
- 11. F#兩個接口的顯式接口方法
- 12. 橋接兩個vm接口vmware
- 13. C++/CLI接口類與接口結構
- 14. 類設計:類實現接口實現另一個接口
- 15. 類與接口
- 16. C# - 接口類
- 17. 接口和類
- 18. 從接口類
- 19. 接口類
- 20. 接口Direct3D的類
- 21. 麻煩與我處理了兩個接口接口
- 22. 接口類與類
- 23. Java類接口類
- 24. ICollection與另一個接口的接口類型爲
- 25. 接口:聲明一個類繼承的接口
- 26. 聲明接口類型的物業另一個接口
- 27. 你會爲2個類實現一個類或2個接口的接口嗎
- 28. 接口與接口
- 29. java中的接口接口
- 30. 一個接口有兩個類型參數。我可以使用兩種類型的接口來實現接口嗎,這樣它們就可以兼容了嗎?
如果你的類中的方法拋出異常,然後由你的類實現應該會拋出異常的方法接口的方法。 – 2013-04-29 14:43:15