php小編子墨帶來的java問答文章將解答一個常見問題:「拋出異常而不是返回。方法返回的實際類型是什麼?」在Java中,當方法拋出異常時,方法的傳回類型實際上是void,而不是拋出異常的類型。這意味著方法並沒有傳回任何值,而是在遇到異常時直接拋出。在處理異常時,可以使用try-catch語句來捕捉異常並進行相應處理,確保程式的穩定性和可靠性。
我正在深入研究 Java 中 URL
類別的 openStream()
方法,以找到其實際的返回類型。來自OpenJDK,其來源是:
公共最終InputStream openStream()拋出java.io.IOException { 返回 openConnection().getInputStream(); }
回傳類型顯然是 InputStream
的 Object,它是一個抽象類別。那麼,這是聲明的類型,返回物件的實際類型是什麼?
我遵循 openConnection()
方法,該方法傳回 URLConnection
類別的物件。我還順著它的原始碼找到了getInputSteam()
的返回。最後,我找到了這段程式碼:
公用輸入流 getInputStream() 拋出 IOException { throw new UnknownServiceException("協定不支援輸入"); }
我的問題是 getInputStream()
的實際回傳類型是什麼,這將是 openStream()
的實際回傳類型?
這是一個使用 HTTPS 位址的範例。
使用調試過程,並在URL#openStream方法上放置斷點。
而且,我的意思是實際的方法,而不是您的呼叫。
從這裡,「步入」openConnection方法。
然後,「步入」openConnection(URL)方法。
這會將您帶到 sun.net.www.protocol.https.Handler 類別。
再次前進到 openConnection(URL, Proxy) 方法,該方法傳回 sun.net.www.protocol.https.HttpsURLConnectionImpl 的新實例。
進一步遍歷,您會發現透過 sun.net.www.protocol.https.DelegateHttpsURLConnection 類別傳回了 HttpsURLConnection# 的實例。
你知道,當我幾年前開始使用 Java 時,我(幾乎)有這個確切的問題,除了我對 java.awt.Graphics
感到困惑。
這個想法是,您實際上不需要知道精確的類別 - 任何實作該介面的東西都可以換入或換出。隨著時間的推移,這使得程式碼的適應性更強。
以上是拋出異常而不是返回。方法傳回的實際類型是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!