<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>你不知道 on 庞玉栋个人博客</title><link>https://pangyd.com/tags/%E4%BD%A0%E4%B8%8D%E7%9F%A5%E9%81%93/</link><description>Recent content in 你不知道 on 庞玉栋个人博客</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Sat, 19 Aug 2017 19:54:40 +0800</lastBuildDate><atom:link href="https://pangyd.com/tags/%E4%BD%A0%E4%B8%8D%E7%9F%A5%E9%81%93/index.xml" rel="self" type="application/rss+xml"/><item><title>转载自【Java编程精选】关于 Java 你不知道的十件事</title><link>https://pangyd.com/post/68-java-java/</link><pubDate>Sat, 19 Aug 2017 20:49:33 +0800</pubDate><guid>https://pangyd.com/post/68-java-java/</guid><description>&lt;p>&lt;span>作为Java 控&lt;span>，&lt;/span>&lt;/span>&lt;span>&lt;span>我们总是对&lt;/span>&lt;span>不太可能直接使用&lt;/span>&lt;span>，&lt;/span>&lt;span>但&lt;/span>&lt;span>能使我们更&lt;/span>&lt;/span>&lt;span>&lt;span>了解&lt;/span>&amp;nbsp;Java 和 Java 虚拟机（Java Virtual Machine，JVM） 的晦涩细节感兴趣。这也是我将 Lukas Eder 在&amp;nbsp;&lt;/span>jooq.org&lt;span>&amp;nbsp;上写的这篇&lt;/span>文章&lt;span>发布出来的原因。&lt;/span>&lt;/p>&lt;p>&lt;span>你在Java发布的时候就开始使用了吗？还&lt;/span>记得那时它叫“Oak”，面向对象也 （Object Oriented， OO ）还是个热门话题，C++ 程序员们觉得 Java 完全没机会成功&lt;span>，Applet的出现也是一件新鲜大事？&lt;/span>&lt;/p>&lt;p>&lt;span>我打赌下文中&lt;/span>至少一半的内容你都不知道。让我们来看看这些令人惊喜的 Java 细节吧。&lt;/p>&lt;h2>1. 受检异常（checked exception）这件事是不存在的&lt;/h2>&lt;p>是这样的，JVM 完全不知道这件事，&lt;span>都是Java语言做的[只有Java语言这么干]。&lt;/span>&lt;/p>&lt;p>现在，&lt;span>异常检查&lt;/span>被公认为是个错误，正如 Brue Eckel 在布拉格的 GeeCON 大会上的闭幕词中所说， Java 后的其他语言&lt;span>都不再使用异常检查了，&lt;/span>就连 Java 8 都不愿在新的 Stream API 中使用它了（当你在 lambda 表达式中使用 IO 或者 JDBC 时，是很痛苦的）。&lt;/p>&lt;p>你想要&lt;span>证明 JVM 不知道异常检查这件事&lt;/span>吗？尝试以下代码：&lt;/p>&lt;p>&lt;img data-s="300,640" data-type="png" data-src="https://pangyd.com/uploads/2017/08/74c10f869f038762.jpg" class="" data-ratio="0.3784246575342466" data-w="584" src="https://pangyd.com/uploads/2017/08/74c10f869f038762.jpg" data-fail="0">&lt;/p>&lt;p>&lt;span>这个不仅会编译，还会抛出 SQLException&lt;span>&amp;nbsp;，你&lt;/span>&lt;/span>&lt;span>甚至&lt;/span>&lt;span>&lt;span>不&lt;/span>需要 Lombok 的&amp;nbsp;&lt;/span>@SneakyThrows&lt;span>&amp;nbsp;标签。&lt;/span>&lt;/p>&lt;p>更多详情请参考这篇文章，或者 Stack Overflow 上的这篇文章。&lt;/p>&lt;h2>2. 可以使用不同的返回值类型来重载方法&lt;/h2>&lt;p>以下代码是编译不过的，对吧？&lt;/p>&lt;p>&lt;img data-s="300,640" data-type="png" data-src="https://pangyd.com/uploads/2017/08/74c10f869f038762.jpg" class="" data-ratio="0.14492753623188406" data-w="483" src="https://pangyd.com/uploads/2017/08/74c10f869f038762.jpg" data-fail="0">&lt;/p></description></item></channel></rss>