<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>5 语言指南 on 编程那些事儿</title><link>https://before80.github.io/prgms/Kotlin/languageguide/</link><description>Recent content in 5 语言指南 on 编程那些事儿</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Sun, 13 Sep 2026 18:20:56 +0800</lastBuildDate><atom:link href="https://before80.github.io/prgms/Kotlin/languageguide/index.xml" rel="self" type="application/rss+xml"/><item><title>5.2 编码规范</title><link>https://before80.github.io/prgms/Kotlin/languageguide/5.2-CodingConventions/</link><pubDate>Sun, 13 Sep 2026 08:50:47 +0800</pubDate><guid>https://before80.github.io/prgms/Kotlin/languageguide/5.2-CodingConventions/</guid><description>&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://kotlinlang.org/docs/coding-conventions.html"&gt;https://kotlinlang.org/docs/coding-conventions.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="52-编码规范"&gt;5.2 编码规范&lt;/h1&gt;
&lt;p&gt;广为人知且易于遵循的编码规范对任何编程语言都至关重要。这里我们为使用 Kotlin 的项目提供代码风格和代码组织方面的指导。&lt;/p&gt;
&lt;h2 id="configure-style-in-ide"&gt;在 IDE 中配置风格&lt;/h2&gt;
&lt;p&gt;Kotlin 最流行的两个 IDE —— &lt;a href="https://www.jetbrains.com/idea/"&gt;IntelliJ IDEA&lt;/a&gt; 和 &lt;a href="https://developer.android.com/studio/"&gt;Android Studio&lt;/a&gt; —— 都为代码风格提供了强大的支持。你可以配置它们，按照给定的代码风格自动格式化代码。&lt;/p&gt;</description></item><item><title>5.3 惯用法</title><link>https://before80.github.io/prgms/Kotlin/languageguide/5.3-Idioms/</link><pubDate>Sun, 13 Sep 2026 08:50:47 +0800</pubDate><guid>https://before80.github.io/prgms/Kotlin/languageguide/5.3-Idioms/</guid><description>&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://kotlinlang.org/docs/idioms.html"&gt;https://kotlinlang.org/docs/idioms.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="53-惯用法"&gt;5.3 惯用法&lt;/h1&gt;
&lt;p&gt;这里汇集了 Kotlin 中一些零散但常用的惯用法。如果你有喜欢的惯用法，欢迎通过发送 pull request 来贡献。&lt;/p&gt;
&lt;h2 id="create-dtos-pojos-pocos"&gt;创建 DTO（POJO/POCO）&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-kotlin" data-lang="kotlin"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#76a9f9"&gt;data&lt;/span&gt; &lt;span style="color:#76a9f9"&gt;class&lt;/span&gt; &lt;span style="color:#ca72ff"&gt;Customer&lt;/span&gt;&lt;span style="color:#abb2bf"&gt;(&lt;/span&gt;&lt;span style="color:#76a9f9"&gt;val&lt;/span&gt; &lt;span style="color:#cebc3a"&gt;name&lt;/span&gt;&lt;span style="color:#abb2bf"&gt;:&lt;/span&gt; &lt;span style="color:#aa89ea"&gt;String&lt;/span&gt;&lt;span style="color:#abb2bf"&gt;,&lt;/span&gt; &lt;span style="color:#76a9f9"&gt;val&lt;/span&gt; &lt;span style="color:#cebc3a"&gt;email&lt;/span&gt;&lt;span style="color:#abb2bf"&gt;:&lt;/span&gt; &lt;span style="color:#aa89ea"&gt;String&lt;/span&gt;&lt;span style="color:#abb2bf"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;它提供一个具有以下功能的 &lt;code&gt;Customer&lt;/code&gt; 类：&lt;/p&gt;</description></item><item><title>5.6 异常与错误处理</title><link>https://before80.github.io/prgms/Kotlin/languageguide/5.6-Exceptions/</link><pubDate>Sun, 13 Sep 2026 08:50:47 +0800</pubDate><guid>https://before80.github.io/prgms/Kotlin/languageguide/5.6-Exceptions/</guid><description>&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://kotlinlang.org/docs/exceptions.html"&gt;https://kotlinlang.org/docs/exceptions.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="56-异常与错误处理"&gt;5.6 异常与错误处理&lt;/h1&gt;
&lt;p&gt;了解 Kotlin 如何使用异常来处理运行时错误。&lt;/p&gt;
&lt;p&gt;即使出现可能中断程序执行的运行时错误，异常也能让你的代码运行得更加可预测。Kotlin 默认把所有异常都视为&lt;em&gt;非受检&lt;/em&gt;（unchecked）异常。非受检异常简化了异常处理流程：你可以捕获异常，但不必显式处理或&lt;a href="../../interoperability/7.1-Javainterop/7.1.3-JavaToKotlinInterop/#checked-exceptions"&gt;声明&lt;/a&gt;它们。&lt;/p&gt;</description></item><item><title>5.9 空安全</title><link>https://before80.github.io/prgms/Kotlin/languageguide/5.9-NullSafety/</link><pubDate>Sun, 13 Sep 2026 08:50:47 +0800</pubDate><guid>https://before80.github.io/prgms/Kotlin/languageguide/5.9-NullSafety/</guid><description>&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://kotlinlang.org/docs/null-safety.html"&gt;https://kotlinlang.org/docs/null-safety.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="59-空安全"&gt;5.9 空安全&lt;/h1&gt;
&lt;p&gt;空安全是 Kotlin 的一项特性，旨在显著降低空引用（也被称为&lt;a href="https://en.wikipedia.org/wiki/Null_pointer#History"&gt;价值十亿美元的错误&lt;/a&gt;）的风险。&lt;/p&gt;
&lt;p&gt;在许多编程语言（包括 Java）中，最常见的陷阱之一是访问空引用的成员会导致空引用异常。在 Java 中，这相当于 &lt;code&gt;NullPointerException&lt;/code&gt;，简称 &lt;em&gt;NPE&lt;/em&gt;。&lt;/p&gt;</description></item><item><title>5.10 相等性</title><link>https://before80.github.io/prgms/Kotlin/languageguide/5.10-Equality/</link><pubDate>Sun, 13 Sep 2026 08:50:47 +0800</pubDate><guid>https://before80.github.io/prgms/Kotlin/languageguide/5.10-Equality/</guid><description>&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://kotlinlang.org/docs/equality.html"&gt;https://kotlinlang.org/docs/equality.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="510-相等性"&gt;5.10 相等性&lt;/h1&gt;
&lt;p&gt;在 Kotlin 中，有两种相等性：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;结构&lt;/em&gt;相等性（&lt;code&gt;==&lt;/code&gt;）—— 对 &lt;code&gt;equals()&lt;/code&gt; 函数的检查&lt;/li&gt;
&lt;li&gt;&lt;em&gt;引用&lt;/em&gt;相等性（&lt;code&gt;===&lt;/code&gt;）—— 检查两个引用是否指向同一个对象&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="structural-equality"&gt;结构相等性&lt;/h2&gt;
&lt;p&gt;结构相等性用于验证两个对象是否具有相同的内容或结构。结构相等性由 &lt;code&gt;==&lt;/code&gt; 运算及其取反形式 &lt;code&gt;!=&lt;/code&gt; 检查。按照约定，像 &lt;code&gt;a == b&lt;/code&gt; 这样的表达式会被转换为：&lt;/p&gt;</description></item><item><title>5.11 泛型：in、out、where</title><link>https://before80.github.io/prgms/Kotlin/languageguide/5.11-Generics/</link><pubDate>Sun, 13 Sep 2026 08:50:47 +0800</pubDate><guid>https://before80.github.io/prgms/Kotlin/languageguide/5.11-Generics/</guid><description>&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://kotlinlang.org/docs/generics.html"&gt;https://kotlinlang.org/docs/generics.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="511-泛型inoutwhere"&gt;5.11 泛型：in、out、where&lt;/h1&gt;
&lt;p&gt;与 Java 一样，Kotlin 中的类可以有类型参数：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f"&gt;1
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f"&gt;2
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-kotlin" data-lang="kotlin"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#76a9f9"&gt;class&lt;/span&gt; &lt;span style="color:#ca72ff"&gt;Box&lt;/span&gt;&lt;span style="color:#abb2bf"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#aa89ea"&gt;T&lt;/span&gt;&lt;span style="color:#abb2bf"&gt;&amp;gt;(&lt;/span&gt;&lt;span style="color:#aa89ea"&gt;t&lt;/span&gt;&lt;span style="color:#abb2bf"&gt;:&lt;/span&gt; &lt;span style="color:#aa89ea"&gt;T&lt;/span&gt;&lt;span style="color:#abb2bf"&gt;)&lt;/span&gt; &lt;span style="color:#abb2bf"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#76a9f9"&gt;var&lt;/span&gt; &lt;span style="color:#cebc3a"&gt;value&lt;/span&gt; &lt;span style="color:#abb2bf"&gt;=&lt;/span&gt; &lt;span style="color:#aa89ea"&gt;t&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#abb2bf"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;要创建这类类的实例，只需提供类型实参：&lt;/p&gt;</description></item><item><title>5.13 反射</title><link>https://before80.github.io/prgms/Kotlin/languageguide/5.13-Reflection/</link><pubDate>Sun, 13 Sep 2026 08:50:47 +0800</pubDate><guid>https://before80.github.io/prgms/Kotlin/languageguide/5.13-Reflection/</guid><description>&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://kotlinlang.org/docs/reflection.html"&gt;https://kotlinlang.org/docs/reflection.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="513-反射"&gt;5.13 反射&lt;/h1&gt;
&lt;p&gt;&lt;em&gt;反射&lt;/em&gt;是一组语言和库特性，让你可以在运行时检视程序的结构。函数和属性在 Kotlin 中是一等公民，而检视它们的能力（例如在运行时获取属性或函数的名称或类型）在使用函数式或响应式风格时至关重要。&lt;/p&gt;</description></item><item><title>5.14 解构声明</title><link>https://before80.github.io/prgms/Kotlin/languageguide/5.14-DestructuringDeclarations/</link><pubDate>Sun, 13 Sep 2026 08:50:47 +0800</pubDate><guid>https://before80.github.io/prgms/Kotlin/languageguide/5.14-DestructuringDeclarations/</guid><description>&lt;blockquote&gt;
&lt;p&gt;原文链接: &lt;a href="https://kotlinlang.org/docs/destructuring-declarations.html"&gt;https://kotlinlang.org/docs/destructuring-declarations.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="514-解构声明"&gt;5.14 解构声明&lt;/h1&gt;
&lt;p&gt;有时把一个对象&lt;em&gt;解构&lt;/em&gt;为若干变量会很方便，例如：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#58626f"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#b0c4de;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-kotlin" data-lang="kotlin"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#76a9f9"&gt;val&lt;/span&gt; (&lt;span style="color:#cebc3a"&gt;name&lt;/span&gt;&lt;span style="color:#abb2bf"&gt;,&lt;/span&gt; &lt;span style="color:#aa89ea"&gt;age&lt;/span&gt;&lt;span style="color:#abb2bf"&gt;)&lt;/span&gt; &lt;span style="color:#abb2bf"&gt;=&lt;/span&gt; &lt;span style="color:#aa89ea"&gt;person&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这种语法称为&lt;em&gt;解构声明&lt;/em&gt;。解构声明会一次性创建多个变量。这里声明了两个新变量 &lt;code&gt;name&lt;/code&gt; 和 &lt;code&gt;age&lt;/code&gt;，你可以独立使用它们：&lt;/p&gt;</description></item></channel></rss>