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中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号