PHP エディター Zimo が提供する Java Q&A 記事は、「例外を返す代わりに例外をスローします。メソッドによって返される実際の型は何ですか?」という一般的な質問に答えます。Java では、メソッドが例外をスローするとき、メソッドの戻り値の型は実際には void であり、例外をスローする型ではありません。これは、メソッドが値を返さず、例外が発生したときに値を直接スローすることを意味します。例外を処理する場合、try-catch ステートメントを使用して例外をキャッチし、それに応じて処理することで、プログラムの安定性と信頼性を確保できます。
Java の URL
クラスの openStream()
メソッドをさらに詳しく調べて、実際の戻り値の型を調べています。 OpenJDK からのソースは次のとおりです:
public Final InputStream openStream() throws java.io.IOException { openConnection().getInputStream(); を返します。 }
戻り値の型は明らかに InputStream
の Object であり、抽象クラスです。これは宣言された型ですが、返されるオブジェクトの実際の型は何でしょうか?
URLConnection
クラスのオブジェクトを返す openConnection()
メソッドに従いました。また、そのソース コードをたどったところ、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 の新しいインスタンスを返します。
さらに進むと、HttpsURLConnection のインスタンスが sun.net.www.protocol.https.DelegateHttpsURLConnection クラスを通じて返されることがわかります。
ご存知のとおり、私が数年前に Java を使い始めたとき、java.awt.Graphics
について混乱していたことを除けば、まさにこれと同じ問題が (ほぼ) 発生していました。
アイデアは、実際には正確なクラスを知る必要はなく、インターフェイスを実装するものはすべて交換できる、または交換できるということです。これにより、時間の経過とともにコードの適応性が高まります。
以上が返される代わりに例外をスローします。メソッドによって返される実際の型は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。