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中文网其他相关文章!